omar wrote:
The issue to consider her is that EDM is released as part of ADO.NET. Although architecture wise EDM is a layer on top of ADO.NET's data access objects, EDM does represent a strong case against why we would opt for a 3rd party framework when we have one build in.
In addition, MS will add designer support for EDM similar to the VS.NET2005's DataSet designer.
Well, what they have now for designer isn't that great to say the least
. And I've to add 1 template to llblgen pro to add EDM support
(which we'll do of course)
Also, I had an argument with one of the guys about the Pros/Cons of presisting the DB's schema in an XML file against presisting it in a code based DLL. I wonder if FRANS ever considered that in the early design stages of LLBL and if he did, why opt for the code-based approach over the XML one?
Well, the mappings have to be stored somewhere, and as LLBLGen Pro uses a designer, the mappings are stored there. I generate them into code because it's faster and the code can be transfered with the entity without having to access a central repository which contains the XML read data.
An external file has the disadvantage that you've to parse it at runtime, and cache the read data, otherwise you'll run into a performance hit. The caching of the data gives the problem that you have to centralize the mapping data, which isn't what you want if you want to work disconnected.
An external file is also another thing to deploy, but I don't find that a big disadvantage.
Attributes are another way to store mapping info, however these are very inflexible and also have the burden that you've to parse them first, cache the parsed data somewhere etc.
EDIT:
The most interesting feature of the new EDM is Mapping.
Mapping from tables to entities is specified declaratively through a mapping definition language and a designer tool in VS would facilitate the mapping graphically.
The mapping subsystem allows applications to manipulate data in terms of entities and relationships rather than rows and tables.
This meens that instead of modeling my entities as one-to-one to DB tables, I can model my entities and then map them to DB tables
That will be the same thing unless your DB tables are seriously badly designed. EDM offers indeed a way to define an abstract entity layer which mimics as if it's a database and you can map your entities onto these 'views'. Though for the rest, you can also do what they can do in LLBLGen Pro already for example with inheritance.
They offer mapping an entity on several tables without inheritance. This is perhaps nice at first, but will have severe drawbacks, for example when fetching data or when saving data. I'm not sure if they'll allow that in the final version.
V2.1 of LLBLGen Pro will have entities constructed from entities, thus aggregated entities, so you can have 'salesorder' which contains customer, order, orderlines etc. and define rules based on the 'salesorder' entity and threat it like a single entity.