需要.NET ORM帮助

时间:2011-01-05 13:30:46

标签: .net orm

我已准备好SQL server db with simple(不多约束)表。现在我需要为表生成DAL和对象类。

.NET ORM(如NHibernate或您建议的任何其他免费FW)可以帮助多少?基本上可以帮助完成编写类和数据库访问功能的繁重任务。我最好花时间为这些对象类编写业务逻辑。

以后添加/更改表格会很容易吗?我对ORM有概念性的想法,但没有使用任何实际经验。

6 个答案:

答案 0 :(得分:3)

您可以使用Linq to SqlEntity Framework自动生成类以及数据访问功能。

您可以将数据库表从Visual Studio中拖放到DBML(L2S)或EDMX(EF)中,它将构建您的类,其成员与列一对一映射,以及您拥有的任何关系定义

要创建Linq to Sql ClassesADO.NET Entity Data Model,请按以下步骤操作:

  • 在其中一个项目
  • 上右键单击Visual Studio
  • 添加=>新物品
  • 选择Linq to Sql ClassesADO.NET Entity Data Model
  • 这将创建一个空白设计视图,用于创建和自定义类。
  • 用户Server Explorer打开与数据库的连接
  • 将表拖放到DBML或EDMX画布上,完成后保存。

例如:

  • 表格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 FrameworkLinq to SQL(来自Microsoft)也会为您生成DAL,并在visual studio中设计一个表面。

所有这些添加和更改表都需要重新生成DAL,因此对这些文件的更改和自定义可能会丢失。

答案 2 :(得分:1)

Linq2SqlEntity framework都可以在很大程度上帮助您解决这个问题。关于更新表的问题:是的,以后更新表非常容易。至少比你手工编写所有内容要容易得多(在那里你也必须手工修改)。

答案 3 :(得分:0)

Nhibernate将处理您的所有数据访问逻辑。 我建议您定义每个外键和主键。 拥有显式主键而不是复合主键也更简单。

要生成对象类,我建议使用T4模板。网上有各种样本模板,编写自己的样本模板相对简单,可以完全按照自己的意愿进行。

让这些对象类充当数据容器并在使用这些DAL类的单独类中实现业务逻辑也是一个好主意。如果基础表发生变化,这将简化能够重新生成它们。

答案 4 :(得分:0)

我有点晚了,但Nuget和Github上的Cocoon ORM很好。它动态地写入数据访问代码。 http://guidelinetech.github.io/cocoon-orm/

网站上的功能列表:

  • 将数据库字段自动转换为域对象属性
  • 在get(选择)
  • 上创建自动联接的AutoCrud
  • 将域对象属性自动转换为存储过程参数
  • 动态创建易于检查的参数化SQL,即执行计划和缓存友好
  • 使用类似于实体框架的简单数据注释
  • 真正偏执的回归和基准测试工具(像我们一样)
  • 用于代码优先环境的表生成工具
  • 用于代码第二环境的类生成工具
  • 使用随附的Comb GUID或Sequential UID生成器轻松创建非整数顺序唯一ID。
  • 与SQL Server 2008/2012/20014 / +和Azure SQL兼容(可与其他TSQL数据库配合使用)
  • 在弱Copyleft LGPL许可下使用您自己的专有代码中的Cocoon ORM库(对Cocoon ORM本身的更改必须是 共享。请让我们知道,以便我们可以一起解决问题!)

答案 5 :(得分:0)

尝试Vega https://github.com/aadreja/vega。最好的&amp;具有企业功能的最快的.net ORM。