我正在使用 ASP.NET MVC启动一个项目,并开始创建我的模型。因为我知道一些Ruby On Rails,并希望使用尽可能类似于Rails Active Record的系统。
是否有人在 ASP.NET MVC应用程序(或任何相关的应用程序)中使用过Castle Projects Active Record并有一些经验可以分享?
MVC 和 Castle Active Record 是正确的方法,还是您建议我改用 LinqToSql。
请分享您可能获得的任何想法和经验。
编辑:澄清;我来自很长的 ASP.NET 和C#背景,但对Rails有过一些了解,并且喜欢创建ORM的简单性
我已经将Castle Active Record与MVC一起使用 ASP.NET。 我非常鼓励这个模型,因为ActiveRecord/NHibernate比LINQ to SQL或Entity Framework成熟得多。
我认为 ASP.NET MVC有一个光明的未来,并会推荐它而不是单轨铁路用于新项目。 然而,正如我所说,ActiveRecord(在我看来)是LinqToSQL更好的ORM。
来自 Rails 背景,Castle Project AR 会感觉更接近你习惯的东西,但 Linq to SQL 更好地与整个Microsoft生态系统集成,你可能会发现这是值得额外努力学习的。
Linq to SQL有一些主要的缺失部分,值得注意的是许多关系。 如果要采用"纯"Microsoft路线,请查看 .net 3.5 sp1 和 Linq to Entities,后者使用新的 ADO.net 实体框架。
我已经将Castle ActiveRecord与MonoRail一起使用,它相当易于使用和直观,尽管您遇到的不可解决的问题通常很难诊断。它的文档也不是最好的(与许多开源项目一样)。默认情况下,它在下面使用 NHibernate ORM,如果您专门在使用 ORM 框架之后,我相信已经有一些努力使用 NHibernate 支持 LINQ,但不知道它走了多远。
我认为这也取决于应用程序的大小,如果它是一个不一定会大量维护的快速项目,那么 ActiveRecord 提供的易用性可能会很方便,但 LINQ 看起来也非常简单和整洁。如果它是一个更大的应用程序,我会考虑使用 NHibernate 滚动您自己的数据层,如果它是您想要的 ORM。
你需要ORM是免费的(如啤酒)/开源吗?
如果你不这样做,那么我强烈推荐来自DevExpress的eXpress持久对象。
如果不是,那么我认为 LINQ 并不相似,我没有使用过 Castle 的 ActiveRecord,但我想这与 RoR 最相似。
MVC不知道你在用什么ORM,或者背后是否有一些ORM工具。控制器/操作必须将对象引用发送到 View,以便该对象可以是简单的 int、字符串数组、数据集、Linq 对象、ActiveRecord 对象等等,对于 View 来说,如何填充某个对象如何填充数据并不重要!
首选 NHibernate 作为您的持久层。