2

当我开始使用 ASP.NET 编写 Web 应用程序时,我开始使用使用 Linq-To-SQL 映射器来访问 MSSQL Server 的数据库的小项目。
在获得了一些经验之后,我切换到了经典的三层方法,即图形层、业务层和数据层。数据层的唯一功能是提供插入/更新/删除方法,没有任何逻辑和逻辑选择方法的形式。

随着时间的推移,我意识到最好不要将数据库类提供给 GUI(不幸的是花了一些时间)。我切换到在 BL 中使用业务类,这些业务类用于 BL 执行的所有操作,并由 GUI 以从业务层获取列表的形式显示。
一个很大的优势是我可以提供数据库本身没有表示的其他属性。但是,我自己使用将相应业务层类映射到数据库类的方法在业务层内部进行了映射。

我想这就是 O/R 映射器派上用场的地方?直到现在,我还没有意识到他们的目的,但我想我刚刚找到了。我最近尝试将新的实体框架与 .NET Framework 4 一起使用,但我只是像 Linq-To-SQL DataContext 一样使用它。

有没有办法自动实现映射?如果是,那是新实体框架提供的东西,还是我需要寻找像 NHibernate 这样的 O/R 映射器?

4

4 回答 4

4

我在我的项目中专门使用 NHibernate。我喜欢它给我的控制和灵活性。有一个名为Active Record的“快捷方式” ,它在底层使用 NHibernate,但提供了一个非常好的简单的 NHibernate 接口。

NHibernate 有一个陡峭的学习曲线,但是当你超越它时——它真的是一帆风顺。当(以及如果)您冒险尝试 NHibernate 的方式时,请查看Ayende以获得很酷的提示。

于 2010-09-02T19:58:08.120 回答
3

(实体框架一个 O/R 映射器。)

如果你真的想用 ORM 弄脏你的手(但在那个领域相对较新),我强烈推荐 TekPub 关于这些主题的视频。您将能够从头开始看到这些工具的使用情况。这是对您提到的一些简单但真实的问题的优雅介绍。

于 2010-09-02T19:57:28.800 回答
1

我在使用 Entity Framework 4.0(+ CTP)时玩得很开心。我认为你会更容易处理这样的 ORM。EF4 提供了从 C#/.NET 与 MSSQL 进行互操作所需的一切。您不必编写一行 SQL,它完全支持 LINQ(通过 ObjectQuery)。

于 2010-09-02T20:49:10.633 回答
1

LinqToSql 是一个 ORM,因此您已经在使用它。取出 LinqToSql 并用 EntityFramework 或 NHibernate 替换它不会解决您现在似乎遇到的问题。

以下是您应该了解的更多内容,以帮助您获得更多背景信息:

于 2010-09-03T10:45:03.720 回答