我已经准备好了一个包含简单表格(没有太多约束)的SQL Server数据库。现在,我需要为这些表格生成数据访问层(DAL)和对象类。
.NET ORM(如NHibernate或您建议的任何其他免费框架)可以帮助解决这个问题吗?基本上,它可以帮助简化编写类和数据库访问函数的繁琐任务,从而使我能够更好地专注于编写这些对象类的业务逻辑。
以后添加/修改表格会容易吗?我对ORM有概念性的了解,但没有使用过任何实际经验。
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
有关系,它将在您的User
类上生成IList<Contact> Contacts
。这将让您在生成的DataContext
内编写像user.Contacts.Where(c => c.ContactId == 7000)
这样的代码如果您需要更定制化的映射方式,您可以使用SQLMetal,它也会生成您的类,但允许您进行更改。例如,将int
属性转换为enums
。
NHibernate也是一个不错的选择,并且已经发展了很长一段时间。
有许多工具可以为您生成DAL。
SubSonic不是ORM,而是一个代码生成工具,可以为您生成DAL。
还有Entity Framework和Linq to SQL(来自Microsoft),它们也可以在Visual Studio中提供设计表面,为您生成DAL。
所有这些都需要重新生成DAL来添加和更改表,因此对这些文件的更改和自定义可能会丢失。
Linq2Sql和Entity framework都可以在很大程度上帮助您解决这个问题。关于您关于更新表的问题:是的,稍后更新表格相当容易。至少比您手写所有内容要容易得多(在那种情况下,您也必须手动进行修改)。
Nhibernate将处理您的所有数据访问逻辑。 我建议您定义尽可能多的外键和主键。 使用显式主键而不是复合主键也更简单。
为了生成对象类,我建议使用T4模板。有各种在线可用的示例模板,并且编写自己的模板以完全满足您的需求相对简单。
还有一个好主意是让这些对象类作为数据容器,并在使用这些DAL类的单独类中实现业务逻辑。这将简化重新生成它们(如果底层表发生更改)的过程。
虽然我来晚了,但是Nuget和Github上的Cocoon ORM很不错。它可以动态地编写数据访问代码。http://guidelinetech.github.io/cocoon-orm/
以下是该网站上的功能列表: