我最近离开了一家小公司,在那里我们使用LINQ2SQL编写.NET MVC应用程序以获取数据访问权。在这里,他们仍在使用Web表单和内部编写的ORM,但是在不久的将来,我们希望在这里转向MVC和可能的LINQ2SQL。我个人喜欢LINQ2SQL的所有内容,除了您在更改表(添加列或其他内容)时遇到的问题,并且每次都必须重新生成dbml文件。
1)该问题是否已经解决,或者有人知道微软是否计划解决该问题?
2)如果我们在这里使用LINQ2SQL之外的其他东西作为我们的新数据访问层,那么每个人的建议是什么?
答案 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)
嗯,最新版本的Entity Frameworks支持“代码优先”,其中数据库是从业务对象自动创建的。但是模型更改时,模型仍然需要重新生成。所以我不确定你在这里寻找什么。
实体框架。
答案 3 :(得分:0)
实体框架允许您从数据库进行更新。您只需右键单击edmx文件并选择“从数据库更新模型”即可。它是Linq2SQL的快速替代品,您可以以相同的方式访问它。两者之间只有一些小的变化。