/ / Mylące MVC i LINQ do SQL - asp.net-mvc, linq-sql, asp.net-mvc-4, linq-to-entity

Mylące MVC i LINQ do SQL - asp.net-mvc, linq-sql, asp.net-mvc-4, linq-to-entity

W tym samouczku http://mstecharchitect.blogspot.com/2009/08/aspnet-mvc-and-linq-to-sql-using.html zalecają używanie LINQ do SQL w MVC. Następnie tworzą repozytorium, które zasadniczo sprawia, że ​​wygląda bardziej jak Entity Framework (używając takich metod jak Add() i Delete() w miejsce LINQ InsertOnSubmit() i DeleteOnSubmit().

Moje pytanie brzmi: co mam tu zrobić? Uwielbiam używać LINQ, ale czuję, że złamie MVC, jeśli porzucę Entity Framework dla LINQ na SQL.

LINQ do SQL generuje następujący wiersz:

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

Mogę więc używać tylko takich metod, jak InsertOnSubmit() i nie mogę używać metod z Entity Framework jak Add().

Wygląda na to, że LINQ to Entities, ale nie jestem pewien, jak to się stanie ...

Widziałem również komentarze tutaj Linq.DataContext do Entity.DbContext? które zdają się sugerować, że jest to zła praktyka ...

Odpowiedzi:

1 dla odpowiedzi № 1

Najpierw zwróć uwagę na datę tego artykułu. Pochodzi z 2009 roku. Oznacza to, że poprzedza Visual Studio 2010 i .net 3.5. Artykuł mówi o Entity Framework 1.0, który miał wiele problemów, dlatego często zaleca się używanie Linq do SQL zamiast EF 1.0 .

Jednak od VS 2010 i EF 4.0, większość tych problemów została rozwiązana, a EF jest obecnie preferowaną metodą od Linq do SQL. L2S jest nadal obsługiwany, ale Microsoft nie robi już żadnych większych usprawnień.

Jak wspomnieli inni w komentarzach, MVC jestagnostyka bazy danych. Możesz korzystać z dowolnej technologii baz danych i nie jest ona w żaden sposób zależna od EF. Możesz użyć EF, L2S, nHibernate, ADO.NET, etc ... Wygrałeś "t" złamać MVC ", ponieważ MVC nie ma pojęcia o twojej technologii baz danych.

Wiele osób nadal wdraża repozytoria i JednostkiPracy nad EF (chociaż osobiście uważam to za dodatkową pracę, chyba że planujesz potrzebować abstrakcji bazy danych, która umożliwia zmianę technologii).

EDYTOWAĆ:

Po dokładniejszym przeczytaniu artykułu nie widzę nigdzie, gdzie L2S poleca nad EF, tak naprawdę na końcu artykułu ma ten komentarz:

Załóżmy, że chcesz zmienić dostęp do danychtechnologia wykorzystująca EF (Entity Framework) zamiast LINQ TO SQL po prostu implementujesz interfejs IStudentRepository z klasą wykorzystującą alternatywną technologię dostępu do bazy danych