我有一堆我创建的POCO,我想创建一个持久层。事情是,我真的不在乎数据如何存储在SQL Server中,我只是希望它被存储。换句话说,我想告诉ORM工具,“这里有一些POCO类,保存它们。”除此之外不需要做任何事情。有没有任何可以做到这一点的C#的ORM工具?我一直在努力争取Fluent NHibernate的工作,而Subsonic不支持关系,这使得像“为单个帖子获取所有评论”这样的东西相当困难。它需要能够自动生成一个数据库模式,而不必设置一堆属性和什么。是否有一个可以将数据库“黑盒子”的C#的ORM工具?
回答
我个人使用流利NHibernate和它为我做你所需要的。好吧,差不多。有事情需要手动指定ManyToMany,但你无法避免它。如果你想要良好的实体设计,你必须让一些成员为私人,这将禁用这些成员的自动映射。不过,我改变了我的设计很多,甚至从来没有想过我的数据库如何改变(一个新项目的奢侈,但...)。
你看过Castle ActiveRecord吗?你真的需要真正的POCO吗,或者你可以忍受属性和实体保存?那么,我会避免,但它可能适用于你。
我用Fluent NHibernate使用automapping遇到的两个问题是:1.当我尝试使用Dictionary列时出现了问题,2.它没有映射枚举,我有很多。第一个问题是可以理解的(我应该将类中的键/值对包装起来),但是我找不到第二个解决方案。 – 2009-10-01 21:55:29
我使用枚举没有问题。我有问题,但谷歌帮助简单的解决方案。这里有很多关于这个的问题,并且很容易解决。现在还不能确切地说,但我刚刚添加了IPropertyConvention,据我所知,它告诉使用GenericEnumMapper进行枚举,请参阅http://stackoverflow.com/questions/439003/how-do-you-map-an-enum -as-an-int-value-with-fluent-nhibernate,尽管你可能想使用CustomTypeIs(typeof(int))。无论如何,这不是FNH的最大问题;-) – queen3 2009-10-01 22:09:30
原来,流利NHibernate的1.0 RTM可以自动映射枚举就好(尽管字符串),但不能做枚举的集合。看看现在是否可行。 – 2009-10-02 03:45:30
如果你不在乎它如何存储比为什么SQL Server?怎么样couchDB http://couchdb.apache.org/docs/intro.html
因为SQL Server是我们公司和客户使用的。 – 2009-10-01 21:49:00
结账Subsonics SimpleRepository。创建一个类,创建一个数据库,给Subsonic一个连接字符串,并处理其余的。俏皮。
SimpleRepository不支持关系生成。如果你有一些不需要关系的单个对象(比如单个博客文章),那很好,但是在你需要关系的情况下(比如属于某个特定文章的评论),你做了什么? – 2009-10-01 21:58:14
看一看的DevExpress的eXpress Persistent Objects
我看了一下,但是因为你必须从XPObject继承,它会把POCO对象变成持久感知对象。 – 2009-10-01 23:26:04
你可以试试DataObjects.Net,但它不是你在寻找什么。首先它的实体不是poco,你必须从某种基类继承它们。其次,你应该标记你想用特殊属性保存的字段。
那么为什么我推荐DataObjects呢?因为我认为它完全是黑箱数据库。您只需制作一堆对象并要求ORM保存它们。
- 它在运行时在指定的RDBMS中自动生成数据库模式。
- 您不必调用像.Save()这样的方法来保存更改,就像使用常用对象一样工作。
- 您不必编写SQL查询 - 它完全支持LINQ。
- 即使当现有数据库升级到下一个版本时,也不必处理SQL脚本。
- 1. 是否有任何使用数据库模式的O/R M或ERD工具?
- 2. 是否有工具可以实时显示我的SQL数据库图表?
- 3. 是否有一个具有类似git特质的数据库?
- 4. 是否可以将子图创建为orientdb图形数据库?
- 5. 是否有一个Windows外壳工具可以保留历史?
- 6. 是否有工具可以从XML架构生成数据库模式?
- 7. 是否有一个C#工具可以让我执行任意代码块?
- 8. Rails黑盒子?
- 9. FloatingActionButton黑盒子
- 10. CodeDom黑盒子
- 11. 是否有任何工具可以将托管C++转换为C++/CLI?
- 12. 可过滤searchview上的大黑盒子
- 13. 是否有重构SQL Server数据库的工具
- 14. 是否有开源的SQL Server数据库比较工具?
- 15. 是否有从数据库表跟踪到java类的工具?
- 16. MYSQL数据库探查器是否有免费的工具?
- 17. 是否可以将sweet.js宏`m`展开为符号`m`?
- 18. 是否有任何工具可以记录SVN存储库?
- 19. 是否有一个用于asp.net mvc的HTML整洁工具/库?
- 20. 是否有一种工具可以一次运行CSS 1行?
- 21. 是否有可用于SQL Server 2005的数据调整工具?
- 22. 是否有一个库可以动态使用Linq直接查询数据库?
- 23. 是否可以将文件组从一个数据库复制到另一个数据库?
- 24. 是否有工具可以减轻Reflection.Emit的工作量?
- 25. 是否有像phpMyAdmin这样的工具可以配置为只访问单个数据库?
- 26. 有黑盒测试的自动化测试工具吗?
- 27. 是否有一个开源工具,用于将现有数据库公开为一组WebServices
- 28. 是否可以将我的数据库与论坛(SMF,phpBB)数据库集成?
- 29. 是否有一个函数可以否定C中的二进制数?
- 30. 是否可以创建一个具有不同大小子项的GridView?
如果数据库中存在外键关系,Subsonic确实支持关系。它应该像迭代'Post.Comments'一样简单... – 2009-10-01 21:37:35
是的,如果您使用ActiveRecord并自下而上。但是,我正在使用SimpleRepository自上而下,到目前为止它还不支持关系。 – 2009-10-01 21:51:53
当报告组想要在六个月后对自动生成的模式进行查询时,问题就会出现。我个人设计我的课程,设计我的表格和关系(可能需要DBA的帮助),然后映射它们。 – TrueWill 2009-10-02 01:36:44