代码优先或模型优先(实体框架/ RIA服务)

时间:2012-11-05 12:25:53

标签: entity-framework-4.1 wcf-ria-services silverlight-5.0

我们正在为许多中小型,不大型的潜在客户开发LOB应用程序。

我们必须为每个新客户安装数据库。

您认为对我们来说最好的方法是什么,模型优先(使用edmx并使用wizzard开发模型和元数据)或Code First。

我们喜欢Entity Framework / RIA Services的简单性,我们认为Optimistic Concurrency足以满足我们的应用程序,但由于数据库必须在SQL Server中从头开始安装(我们不会使用其他数据库),我们不确定哪种方法最适合我们。

1 个答案:

答案 0 :(得分:2)

只要EF和关于edmx / code的选择首先我认为这更多是个人喜好的问题。 Edmx模型似乎比代码更容易,但即使在VS2012中,设计师仍然有点笨拙,特别是如果你有50多个实体。我已经放弃了edmx,因为EF代码首先变得可用了 关于WCF Ria服务我在LOB应用程序中广泛使用它,即使在大型应用程序中也是如此,大多数情况下它比普通的WCF节省了大量的胶水代码。
我相信你知道发布的很好

等功能
  • 服务器端过滤,分页甚至分组
  • 简化sl和完整clr之间代码共享的客户端代码生成

和其他许多人,但也许你对他的局限性更感兴趣

  • 您无法使用嵌套表达式(即Any)从客户端进行查询,但您始终可以向查询添加参数并应用过滤器服务器端,但它不完全相同
  • 你不能直接暴露与silverlight的多对多关系(看看M2M4RIA
  • 您必须将外键字段添加到您的模型中(对我而言,似乎DB泄漏到模型中)
  • WCF Ria服务在主线程中完成大部分工作(即在加载/提交更改后加载DomainContext)
  • 如果您的应用程序变大并且您正在考虑拆分domainservices / domaincontext,请注意在原子事务中尝试提交两个domaincontext的更改时会遇到严重的痛苦
  • 每次构建客户端时都会发生代理生成,并且(我认为)时间长于

尽管我认为这对RAD来说是一项很好的技术,事情可能最终变得更好:Colin Blair has posted on his blog that him is pushing Microsoft in order to release WCF Ria as opensource,这可以真正改善事情,因为微软已经杀死了Sl / Wcf ria开发