LINQ还是其他什么?

时间:2011-07-12 17:16:59

标签: c# linq linq-to-sql orm data-access-layer

我最近离开了一家小公司,在那里我们使用LINQ2SQL编写.NET MVC应用程序以获取数据访问权。在这里,他们仍在使用Web表单和内部编写的ORM,但是在不久的将来,我们希望在这里转向MVC和可能的LINQ2SQL。我个人喜欢LINQ2SQL的所有内容,除了您在更改表(添加列或其他内容)时遇到的问题,并且每次都必须重新生成dbml文件。

1)该问题是否已经解决,或者有人知道微软是否计划解决该问题?

2)如果我们在这里使用LINQ2SQL之外的其他东西作为我们的新数据访问层,那么每个人的建议是什么?

4 个答案:

答案 0 :(得分:4)

目前的MS推动力正朝向实体框架。为什么?因为,坦率地说,由于EF被推迟,LINQ to SQL是一个被抛出的地方。我喜欢LINQ作为“迭代”的一种手段(不太正确,因为它适用于rX而不是枚举,但这可能在技术上有点过于具体)。

如果你想前往MS前进的地方,我会瞄准EF。我个人在当前的迭代中发现了一些问题,但它正在变得更好。您的里程可能会有所不同。

如果这不是数据访问的方式,我会考虑一个非自定义的OR Mapper。它们有很多,其中很多都有很长的历史,并且足够稳定以供企业使用(nHibernate,作为一个例子)。除非绝对必要,否则维护自定义OR Mapper比团队应该承担更多的工作。

答案 1 :(得分:1)

这可能会变得主观,但如果(1)是个问题并且您可以选择第三方产品,那么Developer Express Express Persistent Objects就会有一个有趣的解决方案。这允许在模型更改时尽可能透明地更新数据库。它已存在很长时间并且稳定。

现在,Microsoft已将实体框架作为其ORM推广,旧的LINQ to SQL技术正在迅速被弃用。 EF正在大力发展,无疑会有所改善。

你绝对想要离开内部的ORM。

答案 2 :(得分:0)

  1. 嗯,最新版本的Entity Frameworks支持“代码优先”,其中数据库是从业务对象自动创建的。但是模型更改时,模型仍然需要重新生成。所以我不确定你在这里寻找什么。

  2. 实体框架。

答案 3 :(得分:0)

实体框架允许您从数据库进行更新。您只需右键单击edmx文件并选择“从数据库更新模型”即可。它是Linq2SQL的快速替代品,您可以以相同的方式访问它。两者之间只有一些小的变化。