基于ORM的项目中的类使用

时间:2008-12-01 19:43:33

标签: .net nhibernate orm subsonic

这个问题与NHMInate,Subsonic,Linq2SQL等ORM项目中的“最佳使用”场景有关......

所有这些工具都会生成基本的实体类,其中一些具有属性,另一些则没有。人们使用这些类作为他们的业务类吗?或者是否有从ORM生成的类批量复制数据到手动创建的业务类?

感谢。

4 个答案:

答案 0 :(得分:5)

我倾向于以相反的方式工作。我以我需要的方式创建业务对象,并创建从对象到数据的NHibernate映射。您可以让NHibernate根据您的映射为您生成架构,或者您可以创建自己的架构,并创建两者之间的映射。 Linq2Sql和Entity Framework不支持此功能。在这一点上,我无法与亚力士谈话。

我通常创建我的业务类,并使应用程序至少部分运行而根本没有任何数据库。通过这种方式,我可以更好地理解应用程序应该做什么,以及在决定如何持久保存对象之前应该如何表现。

答案 1 :(得分:1)

所提到的所有工具都有几种解决方案,答案取决于项目的范围。

这是我前一段时间回答的a similar question about LINQ to SQL

希望有所帮助!

答案 2 :(得分:1)

我通常直接在业务和表示层中使用实体。数据层定义实体,业务层操纵实体或查询实体列表,表示层显示实体。

我认为创建单独的业务对象并在两者之间复制数据将是很多不必要的开销。但是如果你发现你必须这样做,我建议只包装实体而不是来回复制数据。您可以隐藏实体并使用“属性”来公开成员和更改行为。

答案 3 :(得分:1)

SubSonic和Linq2Sql是一对一的orm映射器。考虑数据库规范化的情况。例如,员工信息在3个不同的表中分解,但在您的域模型中,您只需要一个对象Employee代表信息。这是SubSonic和Linq2Sql失败的地方。 NHibernate允许您将域对象映射到多个表。        此外,您还想远离自动生成的代码。 NHibernate允许您定义自己的POCO(普通旧C#对象)域,并有不同的方式允许我们将其映射到数据库中的表