Entity Framework vs LINQ to SQL

hlasů
745

Nyní, když .NET v3.5 SP1 byl propuštěn (spolu s VS2008 SP1), nyní máme přístup do rámce .NET entity.

Moje otázka je tato. Když se snažíte rozhodnout mezi použitím Entity Framework a LINQ to SQL jako ORM, jaký je v tom rozdíl?

Jak jsem pochopil, Entity Framework (při použití LINQ k entity) je ‚velký bratr‘, aby LINQ to SQL? Je-li to váš případ - jaké výhody to má? Co to může dělat, že LINQ pro SQL nemůže dělat sama o sobě?

Položena 12/08/2008 v 12:04
zdroj uživatelem
V jiných jazycích...                            


17 odpovědí

hlasů
437

LINQ pro SQL podporuje pouze 1 až 1 mapování databázových tabulek, pohledy, sprocs a funkce jsou k dispozici v Microsoft SQL Server. Je to skvělý API použít k rychlému přístupu k datům konstrukci poměrně dobře navržených databází SQL Server. LINQ2SQL byla poprvé vydána s C # 3.0 a .NET Framework 3.5.

LINQ k entity (ADO.Net Entity Framework) je ORM (Object relační Mapper) API, které umožňuje širokou definici modelů objekt domény a jejich vztah k mnoha různým poskytovatelům ADO.Net dat. Jako takový, můžete kombinovat několik různých databázových, aplikačních serverů nebo protokoly navrhnout agregovaný mash-up objektů, které jsou konstruovány z různých tabulek, zdroje, služby atd Framework ADO.Net byl propuštěn s .NET Framework 3.5 SP1.

To je dobrý úvodní článek na webu MSDN: Představujeme LINQ pro relační data

Odpovězeno 21/09/2008 v 04:22
zdroj uživatelem

hlasů
186

Myslím, že rychlé a špinavé Odpovědí je, že

  • LINQ to SQL je quick-and-jednoduchý způsob, jak to udělat. To znamená, že dostanete jít rychleji, a doručit rychleji, pokud pracujete na něčem menším.
  • Entity Framework je all-out, ne-držení-zatarasil cestu, jak to udělat. To znamená, že budete mít více času, up-front, rozvíjet pomaleji, a mají větší flexibilitu, pokud pracujete na něčem větším.
Odpovězeno 12/08/2008 v 17:00
zdroj uživatelem

hlasů
102

Je LINQ to SQL skutečně mrtvý? Jonathan Allen pro InfoQ.com

Matt Warren popisuje [LINQ pro SQL] jako něco, co „se nikdy ani předpokládat, že existují.“ V podstatě to byla jen má být stát-in, které jim pomohou rozvíjet LINQ, dokud skutečná ORM byl připraven.

...

Stupnice Entity Framework přiměl to, aby si ujít / Visual termín .NET 3.5 Studio 2008. To bylo dokončeno v době pro bohužel s názvem“.NET 3.5 Service Pack 1" , který byl spíš jako hlavní verze, než service pack.

...

Vývojáři nemají rádi [ADO.NET Entity Framework] kvůli složitosti.

...

k .NET 4.0, LINQ to Subjekty budou doporučené řešení přístup k datům pro LINQ pro relační scénářů.

Odpovězeno 03/11/2008 v 16:53
zdroj uživatelem

hlasů
85

Existuje celá řada zjevných rozdílů uvedených v tomto článku @lars vyslaných, ale Stručná odpověď zní:

  • L2S je úzce spojena - vlastnost objektu na konkrétní oblasti databází nebo přesněji objekt mapování určitého schématu databáze
  • L2S bude pracovat pouze s SQL Server (pokud vím)
  • EF umožňuje mapování jednu třídu na více tabulek
  • EF se bude zabývat vztahy MM
  • EF bude mít schopnost cílit jakýkoliv poskytovatel dat ADO.NET

Původní předpoklad byl L2S je určen pro rychlý vývoj a EF pro více aplikací „enterprisey“ n-tier, ale to je prodává L2S trochu krátký.

Odpovězeno 12/08/2008 v 12:15
zdroj uživatelem

hlasů
49

LINQ to SQL

  1. Homogenní zdroj dat: SQL Server
  2. Doporučeno pro malé projekty, pouze pokud je datová struktura dobře navržených
  3. Mapování může být změněna, aniž by se recompilling SqlMetal.exe
  4. .dbml (Database Markup Language)
  5. One-to-one mapování mezi tabulkami a tříd
  6. Podporuje TPH dědičnost
  7. Nepodporuje komplexní typy
  8. Skladování První přístup
  9. Databáze-centric pohled na databázi
  10. Vytvořil C # týmem
  11. Podporovány, ale ne další zlepšení určeny

entity Framework

  1. Heterogeneus zdroj dat: podporuje mnoho poskytovatelů datových
  2. Doporučuje se pro všechny nové projekty, s výjimkou:
    • ty malé (LINQ to SQL)
    • pokud zdroj dat je soubor byt (ADO.NET)
  3. Mapování může být změněna, aniž by recompilling při nastavování modelu a mapování souborů Metadata artefaktů proces zkopírovat do adresáře výstup
  4. .edmx (Entity datový model), který obsahuje:
    • SSDL (Storage Schema Definition Language)
    • CSDL (Koncepční Schema Definition Language)
    • MSL (Mapping Specification Jazyk)
  5. One-to-one, one-to-many, many-to-one mapování mezi tabulkami a tříd
  6. Podporuje dědičnost:
    • TPH (tabulka Per hierarchie)
    • TPT (viz tabulka u každého druhu)
    • TPC (tabulka Per Třída betonu)
  7. Podporuje komplexní typy
  8. Code-First, Model-First, při skladování první přístupy
  9. Aplikace-centric pohled na databázi
  10. Vytvořil tým SQL Server
  11. Budoucnost Microsoft Data API

Viz také:

Odpovězeno 21/04/2015 v 08:26
zdroj uživatelem

hlasů
49

Moje zkušenosti s Entity Framework bylo méně než hvězdné. Za prvé, musíte se dědí z EF základní třídy, takže rozloučit Pocos. Váš návrh bude muset obejít EF. S LinqtoSQL bych mohl využít své stávající obchodní objekty. Navíc neexistuje žádný lazy loading, budete muset implementovat, že sami. Tam jsou některé práce arounds tam používat Pocos a líné načítání, ale existují IMHO protože EF zatím není připravena. Mám v plánu vrátit se k němu po 4,0

Odpovězeno 08/12/2008 v 04:50
zdroj uživatelem

hlasů
43

Našel jsem velmi dobrou odpověď zde , která vysvětluje, kdy použít to, co v jednoduchých slov:

Základním pravidlem pro něž rámec použít, je, jak plánovat na editaci dat v prezentační vrstvě.

  • LINQ-to-SQL - použít tento rámec, pokud máte v plánu na úpravách vztah one-to-one vašich dat ve své prezentační vrstvě. Což znamená, že nemají v úmyslu na kombinaci dat z více než jedné tabulky v jednom pohledu nebo stránky.

  • Entity Framework - použít tento rámec, pokud máte v plánu na propojení dat z více než jedné tabulky v zobrazení nebo stránky. Aby to bylo jasnější, že výše uvedené podmínky jsou specifické pro data, která budou manipulovat podle vašeho názoru nebo stránky, a to nejen zobrazeny. To je důležité pochopit.

S Entity Framework jste schopni „sloučení“ předložili údaje společně předložit prezentační vrstvy v editovatelné formě, a pak, když je předložena, že forma, EF bude vědět, jak aktualizovat všechna data z různých tabulek.

Existuje pravděpodobně přesnější důvody pro výběr EF nad L2S, ale to by asi nejjednodušší, kdo rozumět. L2S nemá schopnost sloučit data pro zobrazení prezentace.

Odpovězeno 23/03/2012 v 16:52
zdroj uživatelem

hlasů
34

Mám dojem, že vaše databáze je poměrně enourmous nebo velmi špatně navržena, pokud Linq2Sql neodpovídá vašim potřebám. Mám asi 10 internetových stránek větších i menších vše pomocí Linq2Sql. Díval jsem se a Entity Framework mnohokrát, ale nemohu najít dobrý důvod pro jeho použití nad Linq2Sql. To znamená, že se snažím používat své databáze jako modelu, takže už mám v poměru 1 ku 1 mapování mezi modelem a databáze.

Na mé současné práci máme databázi s více než 200 tabulek. Stará databáze se spoustou špatných řešení, takže tam jsem viděl výhodu Entity Framework nad Linq2Sql ale přesto bych raději přepracovat databázi protože databáze je motorem aplikace a v případě, že databáze je špatně navržen a pomalu pak moje aplikace bude také pomalý. Pomocí Entity Framework na takové databáze vypadá jako Quickfix zamaskovat špatné model, ale mohlo by to nikdy zakrýt špatný výkon dostanete od takové databáze.

Odpovězeno 21/11/2008 v 20:52
zdroj uživatelem


hlasů
19

Zdejší odpovědi byly pokryty mnoho rozdílů mezi Linq2Sql a EF, ale tam je klíčovým bodem, který nebyl dán velkou pozornost: Linq2Sql podporuje pouze SQL Server, zatímco EF má poskytovatele pro tyto RDBMS let:

Poskytované společností Microsoft:

  • ADO.NET ovladače pro SQL Server Součást ODBC a OLE DB

Přes poskytovatele třetích stran:

  • MySQL
  • Věštec
  • DB2
  • VistaDB
  • SQLite
  • PostgreSQL
  • Informix
  • U2
  • Sybase
  • Synergex
  • Fénix
  • Npgsql

abychom jmenovali alespoň některé.

To dělá EF výkonný programovací abstrakci nad relační úložiště dat, což znamená, vývojáři mají konzistentní programovací model pro práci s bez ohledu na základní úložiště dat. To by mohlo být velmi užitečné v situacích, kdy se vyvíjí produkt, který chcete, aby zajistily bude spolupracovat s celou řadou běžných RDBMS let.

Další situace, kdy že abstrakce je užitečné, je místo, kde jsou součástí vývojového týmu, který pracuje s celou řadou různých zákazníků či jiných obchodních jednotek v rámci organizace, a chcete zlepšit produktivitu vývojářů tím, že sníží počet RDBMS let, které mají, aby se stala obeznámen s cílem podpořit celou řadu různých aplikací na vrcholu různých RDBMS let.

Odpovězeno 17/03/2014 v 04:19
zdroj uživatelem

hlasů
14

Zjistil jsem, že jsem nemohl použít více databází v rámci stejného modelu databáze při použití EF. Ale v linq2sql jsem mohl jen prefixu názvy schématu s názvy databáze.

To byl jeden z důvodů, proč jsem původně začal pracovat s linq2sql. Já nevím, jestli EF dosud povoleno tuto funkci, ale vzpomínám si četl, že to bylo určeno k tomu, aby umožňují.

Odpovězeno 17/02/2011 v 16:36
zdroj uživatelem

hlasů
11

Pokud databáze je jednoduchá a snadná, bude LINQ to SQL dělat. Pokud budete potřebovat logické / abstrahované subjekty na vrcholu tabulek, pak jít na Entity Framework.

Odpovězeno 17/09/2008 v 08:22
zdroj uživatelem

hlasů
7

Ani přesto podporuje Unikátní SQL 2008 datové typy. Na rozdíl od mého pohledu je to, že subjekt má stále šanci postavit model kolem mé zeměpisné datového typu v nějaké budoucí verzi, a LINQ to SQL, je opuštěná, nikdy nebude.

Zajímalo by mě, co se děje s NHibernate nebo OpenAccess ...

Odpovězeno 19/04/2009 v 06:48
zdroj uživatelem

hlasů
6

Myslím, že pokud je třeba vyvinout něco rychle bez podivné věci ve středu, a budete potřebovat zařízení na to, aby subjekty, které zastupují své tabulky:

Linq2Sql může být dobrý spojenecký, používat to s LINQ rozpoutá velký vyvíjející načasování.

Odpovězeno 14/03/2009 v 17:53
zdroj uživatelem

hlasů
3

Já jsem pracoval pro zákazníka, který má velký projekt, který používá LINQ-to-SQL. Když projekt začal to byla jasná volba, protože Entity Framework chyběly některé hlavní rysy v té době a výkonnosti Linq-to-SQL byl hodně btter.

Nyní EF vyvinula a LINQ-to-SQL chybí hlavní prvek pro vysoce škálovatelných služeb, a že je podpora pro asynchronní operace. Máme více než 100 žádostí za sekundu někdy i přesto jsme optimalizovali našich databází, většina dotazů ještě trvat několik milisekund dokončit. Vzhledem k tomu, ze synchronních databázových volání, nit je blokován a není k dispozici pro další požadavky.

Uvažujeme přejít na Entity Framework, a to výhradně pro tuto funkci. Je to škoda, že Microsoft nebyl implementovat podporu asynchronní do LINQ-to-SQL (nebo open-source je, aby obec mohla to udělat).

Odpovězeno 07/05/2017 v 17:43
zdroj uživatelem

hlasů
1

LINQ-to-SQL

Je poskytovatel podporuje pouze SQL Server. Je to mapping technologie pro mapování databáze SQL Server tabulek objekty .NET. Je Microsoft je první pokus o ORM - objektově-relační Mapper.

LINQ-to-subjektů

Je stejný nápad, ale za použití Entity Framework v pozadí, jako ORM - opět od společnosti Microsoft, to podporuje více databází Hlavní výhodou Entity Framework je developer může pracovat na jakékoli databáze Není třeba se učit syntaxi provádět žádné operace na různých různých databází

Podle mých osobních zkušeností Ef je lepší (pokud nemáte představu o tom, SQL) výkon v LINQ je trochu rychlejší v porovnání s EF důvod LINQ jazyk psaný v lambda.

Odpovězeno 21/02/2017 v 05:36
zdroj uživatelem

hlasů
1

LINQ to SQL a Entity Framework vypadat podobně jako na povrchu. Oba poskytují LINQ dotazu proti databázi pomocí datového modelu.

LINQ to SQL se vyvinul z projektu LINQ, který vyšel z týmové práce s jazykem development.While The Entity Framework byl projekt týmu dat programovatelnosti a byl zaměřen na jazyku Entity SQL. Microsoft má relly nehodlá depricate LINQ to SQL.

LINQ to SQL je stále součástí ADO.NET zatímco Entity Framework má samostatný API. Entity Framework je vyšší verze LINQ rámce SQL.Entity používá Entity Data Model pro přemostění mezi vaší aplikací a datového skladu. Jedná se o Entity datový model, nebo EDM, která poskytuje definici svého konceptuálního schématu, stejně jako informace o schématu databáze nezbytné pro interakci s databází a nakonec mapování schématu, který odkazuje na dvě části.

Zde jsou některé úkol provádět Entity Framework (Entity datového modelu).

• Automatické generování tříd z modelu a aktualizuje tyto třídy dynamicky kdykoli změny modelu.

• Stará se o všechny připojení k databázi, takže vývojáři nejsou zatíženy museli psát spoustu kódu pro interakci s databází.

• Poskytuje společnou syntaxi dotazu pro dotazy modelu, ne databáze a pak překládá tyto dotazy na dotazy, které databáze lze pochopit.

• Poskytuje mechanismus pro sledování změn objektů v modelu, jak jsou používány v aplikacích a zpracovává aktualizace databáze.

Odpovězeno 11/10/2016 v 09:34
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more