![]() |
1
9
NHibernate和Silverlight: 其中一位NHibernate撰稿人,Ayende Rahien,最近发表了 a blog post 关于nhibernate和Silverlight:
因此,只要您不打算直接从Silverlight客户端使用它,nhibernate就可以工作。 NHibernate: nhibernate是一个很好的ORM,但是它有一个相当陡的学习曲线,所以如果你选择nhibernate,你应该准备投入一些时间来学习框架。如果你进行投资,你将得到回报的灵活性和力量,NHibernate提供。 城堡活动记录: Castle ActiveRecord是一个构建在NHibernate之上的框架,因此与NHibernate非常相似。它减少了一点学习曲线,因为它增加了一些额外的抽象。顾名思义,它是为与ActiveRecord模式一起使用而构建的,并且包含一个基类,如果您不介意使用它们的ActiveRecord基类,它将为您提供大量的功能。 LINQ to SQL: linq to sql和ado.net实体框架是包含在.NET框架中的两个orm:s。LinqtoSQL是一个比实体框架更小、更简单的框架,但是它有一些好的特性,并且很容易入门。 实体框架: 实体框架也很容易入门,但在当前版本中它有一些相当大的问题,因为它仍然在版本1中。然而,实体框架的下一个版本将改进并修复当前的许多缺点。 框架的LINQ和模式生成: 所有这些框架都支持使用LINQ作为查询语言。linq-to-sql和nhibernate可以基于域类和映射为您生成一个模式。实体框架无法在v1中生成架构,但v2将添加该功能。 |
![]() |
2
2
|
![]() |
3
2
对于没有现有数据库的系统,我认为nhibernate+fluenthibernate自动应用值得一试: http://wiki.fluentnhibernate.org/show/AutoMapping 我以前没有使用过自动应用程序(我有一个要使用的模式),它们将是我调查的第一个想法。 第二个选择是ActiveRecord,可能更可靠/更可靠: http://www.castleproject.org/activerecord/index.html 同样,也没有使用它,但是我相信您用属性标记实体以指定映射。 这两种方法的关键是nhibernate可以将映射导出到自动创建表的数据库。 我也不知道这对Silverlight有何影响。 在回答评论时(在此处键入比评论更容易): nhibernate支持的是获取项目中定义的映射文件并将其导出到数据库的能力。这意味着您只需定义一次模式(应用程序)。 现在,通常这些映射文件是XML。这不是什么大问题,但显然还有改进的空间。 FluentHibernate允许您(a)在代码中定义映射文件,或(b)通过约定从实体中自动创建映射文件。我使用方法(a)是因为我的数据库很糟糕,而且在这个世界上没有它的惯例,但是为了您的使用,我建议(b)自动应用。上面的wiki链接提供了一个简单的例子,说明它如何映射产品和货架。 活动记录的工作原理是允许您将模式定义为实体上的属性,而不是XML。它远不止这些,因为它还实现了ror使用的ActiveRecord模式(entity.save等)。我从来没有用过这个,但它被广泛使用。 生成NHibernate模式的一个重要方面是单元测试。我可以用几行代码在SQL Lite中创建一个测试数据库,导出模式,填充测试数据,运行测试,然后将其销毁。它使集成测试变得容易,还帮助测试查询是否正常工作。 我不知道这些是否是最好的解决方案,因为我只使用NHibernate,所以不能对Linq2SQL、EF或其他ORM发表评论。 |
![]() |
4
0
|
![]() |
5
0
亚音速已经被提到了,但我向克里斯道歉,我认为值得指出的是,亚音速可以 generate a database 从你的模型课程。因为你特别问过这个功能。 |
![]() |
6
0
我绝对会用 ECO .它最多可免费提供12个类,并提供许多有用的功能。它以模型为中心,使用OCL在模型中导航。在我看来,OCL比SQL或LINQ更容易使用。 例如,OCL中的这个构造表达式:
在这个例子中,有两个类,个人和地址。一个人可以有一个地址,一个地址可以有一个地理点(在这种情况下,这由一个布尔标志表示)和一个街道名。上面的表达式过滤所有人地址中具有地理点的所有街道名称。 eco中的另一个重要特性是派生属性,它允许您从其他属性计算值(反过来也可以派生)。然后从第一个查询taht缓存该值可以节省CPU时间。ECO也可以从现有数据库中使用。 |
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 3 年前 |
|
Dansih · .Net核心自定义身份验证方案 3 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 3 年前 |