473,320 Members | 2,146 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

IdeaBlade stories?

My company is looking at the IdeaBlade RAD/ORM tool (www.ideablade.com)
as an aid to building a relatively simple database application (one
main developer, me). I have found the ADO.Net and databinding
"plumbing" to be too demanding of time and expertise to build well. A
business application framework seems to be the best answer. I like what
I have seen in the tool. IdeaBlade's references (of course) are quite
happy with the tool. I wondered if anyone had failures with this tool
or decided against it for any particular reason. We would like to hear
all sides of the story.

Sean

(P.S. I really don't have time to investigate every framework out
there. I don't really need pointers to other options, yet. I'm
interested in what others use, but just pointing me at nHibernate, et
al, isn't useful for me now.)

Nov 17 '05 #1
6 1722
Sean,

The easiest thing to do would be to implement something like this:
http://www.codeguru.com/columns/DotN...cle.php/c6599/

Basically you define a base class and some custom attributes. Then you
create a class which inherits from this base, and marks properties as
'DatabaseField's. You could would at a minimum look like the table it
represents and the base class would provide load, save and delete
functionality. there are alot of different things you could do
building such a framework, but you could build one to suit your needs.
Once the framework is in place, you could also build a program that
examines a database table and generates the class for you (ie, it would
inherit from the proper base class, and create properties for each
field and make the properties as a database field).

I've done this, and it works very well. With a good design, you could
even allow for different database systems; in my case, a base Entity
provides much of the functionality (using reflection to build a list of
the columns, for example) and then I have a SqlEntity which 'knows' how
to talk to Sql Server, Filemakerentity knows how to talk to Filemaker,
etc.

When i need to access a new table, I have a tool i created which allows
me to point to the table i want, and generate the approriate class.

In your business layer, the plumbing code is simply creating the class
which represents the table, telling it to load and then copying the
values from its properties into your business object.

HTH,
Andy

Nov 17 '05 #2

"Andy" <aj********@capcitypress.com> wrote in message
news:11*********************@g44g2000cwa.googlegro ups.com...
Sean,

The easiest thing to do would be to implement something like this:
http://www.codeguru.com/columns/DotN...cle.php/c6599/

Basically you define a base class and some custom attributes. Then you
create a class which inherits from this base, and marks properties as
Or, if IdeaBlade does the job and you can afford it, don't re-invent the
wheel...

If one part of IdeaBlade is the most attractive to you - the O/R mapper, for
instance, there are a dozen or so choices in this area that can generate
classes from an existing DB, or generate a DB from classes, or generate both
from XML, or go all ways from Sunday - it really depends on what you have to
start with and where you want to end up. (Is there an existing legacy DB
and/or existing business objects? ...?)

There is of course, no shortage of cool data-bound controls for .net as
well, so coding may be minimal.

But sometimes (close to) no coding is great if the tool does what you're
after...

Seems to me though that if you auto-magically generate a DB app., it should
be web-based, and not a rich client -- though I'm not exactly sure why I
feel that way at the moment. Also, code-generation, which tends to be a
one-way street, is not great IMHO - I'd prefer a framework that did as much
as possible at runtime using metadata than up-front using spewed code - you
can probably find both approaches out there.

m

'DatabaseField's. You could would at a minimum look like the table it
represents and the base class would provide load, save and delete
functionality. there are alot of different things you could do
building such a framework, but you could build one to suit your needs.
Once the framework is in place, you could also build a program that
examines a database table and generates the class for you (ie, it would
inherit from the proper base class, and create properties for each
field and make the properties as a database field).

I've done this, and it works very well. With a good design, you could
even allow for different database systems; in my case, a base Entity
provides much of the functionality (using reflection to build a list of
the columns, for example) and then I have a SqlEntity which 'knows' how
to talk to Sql Server, Filemakerentity knows how to talk to Filemaker,
etc.

When i need to access a new table, I have a tool i created which allows
me to point to the table i want, and generate the approriate class.

In your business layer, the plumbing code is simply creating the class
which represents the table, telling it to load and then copying the
values from its properties into your business object.

HTH,
Andy

Nov 17 '05 #3
> Or, if IdeaBlade does the job and you can afford it, don't re-invent the
wheel...

Exactly. My time is worth more than the upfront cost. I am not just a
developer. I have IT Mgmt responsibilities, too. If a tool can help me
build applications faster, then it is a plus. We don't sell software,
so there is no real competitive edge to building our own framework. In
fact, it might be a hindrance if I were ever to leave.

I got a few answers more directly from users on the ideablade
newsgroups. So far the feedback is very positive. One company chose a
different tool, b/c they wanted industrial strength ORM and not the UI
binding part.

I hope a few more folks respond here.

Nov 17 '05 #4
<i>Or, if IdeaBlade does the job and you can afford it, don't re-invent
the
wheel... </i>

Its been my experience that out of the box OR mappers handle simple
cases very well, but fail for more advanced data needs. Why have an
elaborate framework to do what usually amounts to:

this.X = data.x;
this.Y = data.y;

<i>Seems to me though that if you auto-magically generate a DB app., it
should
be web-based, and not a rich client -- though I'm not exactly sure why
I
feel that way at the moment.</i>

If you're building a proper n-tier application (which it sounds like
Sean is) your UI shouldn't really matter all that much. In fact
there's no reason he couldn't have multiple UIs built off the exact
same business objects.

<i>Also, code-generation, which tends to be a
one-way street, is not great IMHO - I'd prefer a framework that did as
much
as possible at runtime using metadata than up-front using spewed code -
you
can probably find both approaches out there.</i>

Code generation saves quite a bit of time. Again, when done properly,
any changes simply require a regeneration. But I only recommended that
to get started. Why type the code for 10-20 properties (fields) every
time you need to access a new table? Once you generated the data class
though, its pretty easy to make changes and keep things in sync.

Doing everything at run time is great if performance isn't a concern at
all.. but I think there's also something to be said for being able to
do a compile to find errors instead of having to run it. There are
more interesting problems than tracking down typos.

Nov 17 '05 #5

"Andy" <aj********@capcitypress.com> wrote in message
news:11*********************@o13g2000cwo.googlegro ups.com...
<i>Or, if IdeaBlade does the job and you can afford it, don't re-invent
the
wheel... </i>

Its been my experience that out of the box OR mappers handle simple
cases very well, but fail for more advanced data needs. Why have an
elaborate framework to do what usually amounts to:

this.X = data.x;
this.Y = data.y;
Well, you say that OR mappers handle simple cases well, and then say that
most cases are simples cases -- so, ergo, OR mappers handle most cases
well...

Anyway - I disagree. OR mappers can handle very complex cases - including
multiple methodologies (even in a single transaction) for storing full
object graphs in relational form, spanning tables and databases, using views
rather that hard tables, supporting both dynamic SQL and stored procs for
acessors/setters, various object caching options for each class, etc.
<i>Seems to me though that if you auto-magically generate a DB app., it
should
be web-based, and not a rich client -- though I'm not exactly sure why
I
feel that way at the moment.</i>

If you're building a proper n-tier application (which it sounds like
Sean is) your UI shouldn't really matter all that much. In fact
there's no reason he couldn't have multiple UIs built off the exact
same business objects.
Sure.
<i>Also, code-generation, which tends to be a
one-way street, is not great IMHO - I'd prefer a framework that did as
much
as possible at runtime using metadata than up-front using spewed code -
you
can probably find both approaches out there.</i>

Code generation saves quite a bit of time. Again, when done properly,
any changes simply require a regeneration. But I only recommended that
to get started. Why type the code for 10-20 properties (fields) every
time you need to access a new table? Once you generated the data class
though, its pretty easy to make changes and keep things in sync.

Doing everything at run time is great if performance isn't a concern at
all.. but I think there's also something to be said for being able to
do a compile to find errors instead of having to run it. There are
more interesting problems than tracking down typos.
The ability to handle errors is the same whether code is compiled, or other
meta-data is verified against the schema and classes.
I don't see where "typos" come in - I'm still talking about a fully
automated process.
As far as performance, of course every situation is different - but I'd
wager that for 90% of applications (non-tremendous dataset, managable # of
simul. users, etc.), this descision will have no human-measureable
performance penality - especailly sense the OP asked about a "relatively
simple database application" -- and taking advantage of an O/R mapper's
object cache can significantly speed up a demanding application that hits
the DB every time.

m

Nov 17 '05 #6
Andy wrote:
<i>Or, if IdeaBlade does the job and you can afford it, don't
re-invent the
wheel... </i>

Its been my experience that out of the box OR mappers handle simple
cases very well, but fail for more advanced data needs. Why have an
elaborate framework to do what usually amounts to:

this.X = data.x;
this.Y = data.y;
that's not advanced. Advanced O/R mapping is more focussed towards
pulling graphs of objects out of the DB in an efficient way and saving
/updating graphs of objects with a single line of code (so all objects
are saved in the right order, FK's are synced with PK's automatically
etc. etc.).

That takes a lot of work to get it right. reading a table and storing
values into a class' properties isn't hard. (although renaming fields
on the table or entity side, re-ordering them on the table or entity
side often cause trouble for some o/r mappers ;))
<i>Also, code-generation, which tends to be a
one-way street, is not great IMHO - I'd prefer a framework that did as
much
as possible at runtime using metadata than up-front using spewed code
- you
can probably find both approaches out there.</i>

Code generation saves quite a bit of time. Again, when done properly,
any changes simply require a regeneration. But I only recommended
that to get started. Why type the code for 10-20 properties (fields)
every time you need to access a new table? Once you generated the
data class though, its pretty easy to make changes and keep things in
sync.
I hope you don't refer to the process of keeping mappings in sync with
a db schema as 'easy'
Doing everything at run time is great if performance isn't a concern
at all.. but I think there's also something to be said for being able
to do a compile to find errors instead of having to run it. There are
more interesting problems than tracking down typos.


Exactly. That's also why an O/R mapper should have a fully OO query
language/mechanism, not string based stuff: the second you rename a
field in your entity, it might break queries everywhere, but without
compiletime tracking, it's hard to find these at compile time.

Frans

--
------------------------------------------------------------------------
Get LLBLGen Pro, productive O/R mapping for .NET: http://www.llblgen.com
My .NET blog: http://weblogs.asp.net/fbouma
Microsoft MVP (C#)
------------------------------------------------------------------------
Nov 17 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: John Beardsworth | last post by:
Hi I'm customising phpNuke as an intranet application. The client would like the option of letting users post news stories without administrators' approval, so I've added a function to the...
0
by: Stephan Deibel | last post by:
Hi, O'Reilly Associates has agreed to print a second volume of Python Success Stories and I am looking for contributors of new stories. This booklet will showcase Python in the context of a...
0
by: Stephan Deibel | last post by:
Hi, I just wanted to let y'all know that the Python Success Stories collection has nine new additions: http://www.pythonology.com/success These 28 stories include significant testimonials...
0
by: Stephan Deibel | last post by:
Hi, O'Reilly Associates is going to be printing volume III of the Python Success Stories series in June and I'm looking for submissions of new stories. The stories have been quite valuable...
0
by: Petrone | last post by:
And so are the success stories. Munich, Germany's recently disclosed plans to move off Windows to Linux on the desktop is the most high profile large-scale migration, but there are many...
0
by: A | last post by:
Hello Does anybody use IdeaBlade .NET product? I would like to have some input about performance problems / bugs / limitations / recommandations. Thank you
0
by: sdurity | last post by:
My company is looking at the IdeaBlade RAD/ORM tool (www.ideablade.com) as an aid to building a relatively simple database application (one main developer, me). I have found the ADO.Net and...
1
by: gaikokujinkyofusho | last post by:
Hi, I have been enjoying being able to subscribe to RSS (http://kinja.com/user/thedigestibleaggie) for awhile and have come up with a fairly nice list of feeds but I have run into an annoying...
0
by: jayabarathi2007 | last post by:
Romance stories details........................ Romance stories details........................ Romance stories details........................ http://geocities.com/unisebus/ ...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
0
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.