Reviewing this thread again, I think you guys missed the point.
I agree that the goal of the Model is to create a database agnostic schema. GREAT, that is why we use an ORM. However, what you seem to be missing that the normalized ontology for that model could be better, and made much easier for us to use without a ton of effort.
For example, suppose I want to add a 'Name' attribute to my entity table 'Person'. Here is what I want to be able to do and to have happen:
- Add 'Name' to table 'Person' in .rlinq file
- Specify 'Name' as a 'String(50)', which means it is limited to 50 characters by the ORM with a hard trim (causing a user-selectable exception or simply cut it short).
- Have an icon on the top of the 'Person' table to create/update the underlying SQL database table.
- If 'Person' does not exist already as an SQL database table, it is created, then a 'Name' property of type 'varchar(50)' is added. This means the database itself won't accept more than 50 characters, and can use that to save space on the hard disk.
- Person.Name Model is mapped to Person.Name SQL Table for me
That would make your ORM SO MUCH EASIER to use! Similar behavior for primary keys, backend generated flags, identity, etc.
PLEASE include the above one of your next releases (after programmatic generation of schema). Thanks!