当我开始用asp.net编写web应用程序时,我开始使用Linq-To-SQL映射器来访问MSSQL Server的小型项目。
获得一定的成绩后,我转入了经典的3层,包括图形层,业务层,数据层。数据层的唯一功能是提供插入/更新/删除方法,没有任何逻辑和逻辑选择方法的形式。如何将我的业务层对象映射到数据库中?是否是O/R映射器的时间?
过了一段时间,我意识到最好不要将数据库类提供给GUI(不幸的是花了一些时间)。我开始在BL中使用Business类,这些类用于BL执行的所有操作,并由GUI以获取BL中的List的形式显示。
一个很大的优点是我可以提供其他属性,这些属性不是由数据库本身表示的。然而,我在BL里面用映射相应的BL类到数据库类的方法进行了映射。
我想这就是O/R映射器派上用场了吗?直到现在我还没有意识到他们的目的,但我想我只是找到了它。我最近尝试过使用.net framework 4的新实体框架,但我只是像Linq-To-SQL DataContext一样使用它。
有没有办法自动实现映射?如果是的话,是新的实体框架提供了什么,或者我需要寻找像NHibernate一样的O/R映射器?
AR是好的,如果你确定你永远不想以任何其他方式做ORM。剥离AR实现,尤其是装饰器,退出你的领域是一件非常痛苦的事情。我通常更喜欢Repository模式;另一方面的ORM可以是任何你想要的,从一个自己存储的proc系统到Linq2SQL到NHibernate到EF,如果你已经很好地构建了你的IRepository接口,你的代码将永远不会知道它们的区别。 – KeithS 2010-09-03 00:32:31