我已准备好SQL server db with simple(不多约束)表。现在我需要为表生成DAL和对象类。
.NET ORM(如NHibernate或您建议的任何其他免费FW)可以帮助多少?基本上可以帮助完成编写类和数据库访问功能的繁重任务。我最好花时间为这些对象类编写业务逻辑。
以后添加/更改表格会很容易吗?我对ORM有概念性的想法,但没有使用任何实际经验。
答案 0 :(得分:3)
您可以使用Linq to Sql或Entity Framework自动生成类以及数据访问功能。
您可以将数据库表从Visual Studio中拖放到DBML(L2S)或EDMX(EF)中,它将构建您的类,其成员与列一对一映射,以及您拥有的任何关系定义
要创建Linq to Sql Classes
或ADO.NET Entity Data Model
,请按以下步骤操作:
Linq to Sql Classes
或ADO.NET Entity Data Model
Server Explorer
打开与数据库的连接例如:
User
成为班级User
User
包含列FirstName
,则会成为属性FirstName
User
与表格Contact
有关系,则会在IList<Contact> Contacts
课程中生成User
。这样您就可以在生成的user.Contacts.Where(c => c.ContactId == 7000)
DataContext
之类的代码
如果您需要更加自定义的方式来映射表格,可以使用SQLMetal,这也会生成您的课程但允许您进行更改。例如,将int
属性转换为enums
。
NHibernate也是一个很好的选择,并且已经走了很长的路。
答案 1 :(得分:1)
有许多工具可以为您生成DAL。
SubSonic不是ORM,而是代码生成工具,可以为您生成DAL。
Entity Framework和Linq to SQL(来自Microsoft)也会为您生成DAL,并在visual studio中设计一个表面。
所有这些添加和更改表都需要重新生成DAL,因此对这些文件的更改和自定义可能会丢失。
答案 2 :(得分:1)
Linq2Sql和Entity framework都可以在很大程度上帮助您解决这个问题。关于更新表的问题:是的,以后更新表非常容易。至少比你手工编写所有内容要容易得多(在那里你也必须手工修改)。
答案 3 :(得分:0)
Nhibernate将处理您的所有数据访问逻辑。 我建议您定义每个外键和主键。 拥有显式主键而不是复合主键也更简单。
要生成对象类,我建议使用T4模板。网上有各种样本模板,编写自己的样本模板相对简单,可以完全按照自己的意愿进行。
让这些对象类充当数据容器并在使用这些DAL类的单独类中实现业务逻辑也是一个好主意。如果基础表发生变化,这将简化能够重新生成它们。
答案 4 :(得分:0)
我有点晚了,但Nuget和Github上的Cocoon ORM很好。它动态地写入数据访问代码。 http://guidelinetech.github.io/cocoon-orm/
网站上的功能列表:
答案 5 :(得分:0)
尝试Vega https://github.com/aadreja/vega。最好的&amp;具有企业功能的最快的.net ORM。