我有一堆我创建的 POCO,我想为其创建一个持久层。问题是,我真的不在乎数据是如何存储在 SQL Server 中的,我只想存储它。换句话说,我想告诉 ORM 工具,“这里有一些 POCO 类,保存它们。” 并且不必做除此之外的任何事情。是否有任何 C# 的 ORM 工具可以做到这一点?我一直在努力让 Fluent NHibernate 正常工作,而 Subsonic 不支持关系,这使得“获取单个帖子的所有评论”之类的事情变得非常困难。它需要能够自动生成数据库模式,而无需我设置一堆属性等等。
5 回答
您可以尝试DataObjects.Net,但这并不完全符合您的要求。首先,它的实体不是 poco,您必须从某些基本类型继承它们。其次,您应该使用特殊属性标记要保存的字段。
那么为什么我推荐DataObjects呢?因为我认为它完全是黑盒数据库。您只需制作一堆对象并要求 ORM 保存它们。
- 它在运行时自动在指定的 RDBMS 中生成数据库模式。
- 您不必调用 .Save() 之类的方法来保存更改,只需像使用普通对象一样工作。
- 您不必编写 SQL 查询 - 它完全支持 LINQ。
- 即使将现有数据库升级到下一个版本,您也不必处理 SQL 脚本。
我个人使用 Fluent NHibernate,它可以满足您的需求。嗯,差不多。有些事情需要手动指定 ManyToMany,但您无法避免。如果你想要好的实体设计,你必须将一些成员设为私有,这会禁用这些成员的自动映射。尽管如此,我还是改变了我的设计很多,甚至从未想过我的数据库是如何改变的(一个新项目的奢侈,但是......)。
你看过Castle ActiveRecord吗?您真的需要真正的 POCO,还是可以使用属性和 .Save 实体?好吧,我会避免这种情况,但它可能对你有用。
查看Subsonics SimpleRepository。创建一个类,创建一个数据库,给 Subsonic 一个连接字符串,然后它会处理其余的。漂亮。
如果你不关心它是如何存储的,为什么还要使用 SQL Server?沙发数据库怎么样http://couchdb.apache.org/docs/intro.html
看看 DevExpress 的eXpress 持久对象