0

在本教程http://mstecharchitect.blogspot.com/2009/08/aspnet-mvc-and-linq-to-sql-using.html中,他们建议在 MVC 中使用 LINQ to SQL。然后他们创建了一个存储库,基本上使它看起来更像实体框架(使用Add()Delete()代替 LINQInsertOnSubmit()DeleteOnSubmit().

我的问题是,我应该在这里做什么?我喜欢使用 LINQ,但我觉得如果我放弃 LINQ to SQL 的实体框架,它会破坏 MVC。

LINQ to SQL 生成以下行:

public partial class DataClasses1DataContext : System.Data.Linq.DataContext

所以,我只能使用方法InsertOnSubmit(),我不能使用实体框架中的方法,比如Add().

听起来 LINQ to Entities 将是答案,但我不确定它是如何发挥作用的......

我还在这里看到了Linq.DataContext to Entity.DbContext 的评论?这似乎暗示这是不好的做法......

4

1 回答 1

1

首先,注意那篇文章的日期。它是从 2009 年开始的。这意味着它在 Visual Studio 2010 和 .net 3.5 之前。这篇文章讲的是 Entity Framework 1.0,它有很多问题,因此经常建议使用 Linq to SQL 而不是 EF 1.0。

但是,从 VS 2010 和 EF 4.0 开始,大多数这些问题都得到了解决,EF 现在是 Linq to SQL 的首选方法。L2S 仍受支持,但微软不再对其进行任何重大改进。

正如其他人在评论中提到的那样,MVC 与数据库无关。您可以使用任何数据库技术,它不依赖于任何方式的 EF。您可以使用 EF、L2S、nHibernate、ADO.NET 等...您不会“破坏 MVC”,因为 MVC 没有您的数据库技术的概念。

许多人仍然在 EF 之上实现存储库和工作单元(尽管我个人认为这是额外的工作,除非您计划需要一个允许您更改技术的数据库抽象)。

编辑:

进一步阅读这篇文章后,我看不到它在任何地方推荐 L2S 而不是 EF,事实上在文章的末尾它有这样的评论:

假设如果您想使用 EF(实体框架)而不是 LINQ TO SQL 更改数据访问技术,您只需使用使用替代数据库访问技术的类实现 IStudentRepository 接口

于 2013-04-28T15:35:39.383 回答