Dela via


EntityClient-provider för Entity Framework

EntityClient-providern är en dataprovider som används av Entity Framework-program för att komma åt data som beskrivs i en konceptuell modell. Information om konceptmodeller finns i Modellering och mappning. EntityClient använder andra .NET Framework-dataproviders för att komma åt datakällan. EntityClient använder till exempel .NET Framework Data Provider för SQL Server (SqlClient) vid åtkomst till en SQL Server-databas. Information om SqlClient-providern finns i SqlClient för Entity Framework. EntityClient-providern implementeras i System.Data.EntityClient namnområdet.

Hantera anslutningar

Entity Framework bygger på lagringsspecifika ADO.NET dataproviders genom att tillhandahålla en EntityConnection till en underliggande dataprovider och relationsdatabas. Om du vill konstruera ett EntityConnection objekt måste du referera till en uppsättning metadata som innehåller de modeller och mappningar som krävs, samt ett lagringsspecifikt dataprovidernamn och anslutningssträng. När är EntityConnection på plats kan entiteter nås via de klasser som genereras från den konceptuella modellen.

Du kan ange en anslutningssträng i app.config-filen.

Innehåller System.Data.EntityClientEntityConnectionStringBuilder även klassen . Den här klassen gör det möjligt för utvecklare att programmatiskt skapa syntaktiskt korrekta anslutningssträng och parsa och återskapa befintliga anslutningssträng med hjälp av egenskaper och metoder för klassen. Mer information finns i Skapa en entitet Anslut ion Anslut ionssträng.

Skapa frågor

Entity SQL-språket är en lagringsoberoende dialekt av SQL som fungerar direkt med konceptuella entitetsscheman och har stöd för entitetsdatamodellbegrepp som arv och relationer. Klassen EntityCommand används för att köra ett Entity SQL-kommando mot en entitetsmodell. När du skapar EntityCommand objekt kan du ange ett lagrat procedurnamn eller en frågetext. Entity Framework fungerar med lagringsspecifika dataproviders för att översätta allmän entitets-SQL till lagringsspecifika frågor. Mer information om hur du skriver SQL-frågor för entitet finns i Entitets-SQL-språk.

I följande exempel skapas ett EntityCommand objekt och en sql-frågetext tilldelas till dess EntityCommand.CommandText egenskap. Den här entitets-SQL-frågan begär produkter som sorteras efter listpriset från den konceptuella modellen. Följande kod har ingen kunskap om lagringsmodellen alls.

EntityCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT VALUE p
 FROM AdventureWorksEntities.Product AS p
 ORDER BY p.ListPrice";

Köra frågor

När en fråga körs parsas och konverteras den till ett kanoniskt kommandoträd. All efterföljande bearbetning utförs i kommandoträdet. Kommandoträdet är kommunikationsmedel mellan System.Data.EntityClient och den underliggande .NET Framework-dataprovidern, till exempel System.Data.SqlClient.

Exponerar EntityDataReader resultatet av att köra en EntityCommand mot en konceptuell modell. Om du vill köra kommandot som returnerar anropar EntityDataReaderExecuteReaderdu . Implementeringarna EntityDataReaderIExtendedDataRecord för att beskriva omfattande strukturerade resultat.

Hantera transaktioner

I Entity Framework finns det två sätt att använda transaktioner: automatisk och explicit. Automatiska transaktioner använder System.Transactions namnområdet och explicita transaktioner använder EntityTransaction klassen.

Information om hur du uppdaterar data som exponeras via en konceptmodell finns i Så här hanterar du transaktioner i Entity Framework.

I det här avsnittet

Gör så här: Skapa en entitet Anslut ion Anslut ionssträng

Så här kör du en fråga som returnerar PrimitiveType-resultat

Så här kör du en fråga som returnerar StructuralType-resultat

Så här kör du en fråga som returnerar RefType-resultat

Så här kör du en fråga som returnerar komplexa typer

Så här kör du en fråga som returnerar kapslade samlingar

Så här kör du en parameteriserad SQL-fråga för entitet med EntityCommand

Så här kör du en parameteriserad lagrad procedur med EntityCommand

Så här kör du en polymorf fråga

Gör så här: Navigera i relationer med navigeringsoperatorn

Se även