Entity Framework Core Handledning
Komma igång med Entity Framework Core
Sök…
Anmärkningar
Entity Framework (EF) Core är en lätt och utdragbar version av den populära datatillgångstekniken för Entity Framework.
EF Core är en objektrelational mapper (O / RM) som gör det möjligt för .NET-utvecklare att arbeta med en databas med hjälp av .NET-objekt. Det eliminerar behovet av de flesta av datatillgångskoden som utvecklare vanligtvis behöver skriva.
Lägga till paket till projektet
För att lägga till EntityFrameworkCore till ditt projekt uppdaterar project.json filen project.json (lägg till nya rader i avsnitten dependencies och tools ):
"dependencies": {
...
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Design": {
"version": "1.0.0",
"type": "build"
},
},
"tools": {
...
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}
Glöm inte att köra dotnet restore att faktiskt ladda ner dessa paket från internet.
Om du använder en annan RDBMS än Microsoft SQLServer - ersätt Microsoft.EntityFrameworkCore.SqlServer med rätt version ( Microsoft.EntityFrameworkCore.Sqlite , Npgsql.EntityFrameworkCore.PostgreSQL eller annat - konsultera din RDBMS-dokumentation för det rekommenderade paketet).
Databas först i enhetsramkärnan med ett klassbibliotek och SQL-server
Okej det tog mig ungefär en dag att ta reda på det så här lägger jag ut de stegen jag följde för att få min databas först att arbeta i ett Class Project (.NET Core) , med en .NET Core Web App.
Steg 1 - Installera .NET Core
Se till att du använder .NET Core inte DNX (Hint: You should be able to see the .NET Core option when creating a New Project) - Om INTE laddas ner härifrån
Om du har problem med att installera .NET Core (Fel är något som Visual Studio 2015 Update 3 inte korrekt installerat) - Du kan köra installationen med kommandot: [ DotNetCore.1.0.0-VS2015Tools.Preview2.exe SKIP_VSU_CHECK=1 ] - Vilket förhindrar installationen av Visual Studio Check Github-frågan
Steg 2 - Skapa projekten
Skapa en ny ASP.NET Core webbapplikation -> Välj sedan webbapplikation i nästa skärm
Lägg till ett Class Library (.NET Core) -projekt
Steg 3 - Installera EF-paket
Öppna din project.json fil i Class Library och klistra in följande och spara sedan filen:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"NETStandard.Library": "1.6.0"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"net46": {
},
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
}
}
}
}
}
Detta bör återställa paketen under References
---------------- ELLER
Du kan installera dem med Nuget Package Manager genom att köra följande kommandon i Package Manager Console
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
Obs! Installera ett paket i taget - om du får ett fel efter installationen
Microsoft.EntityFrameworkCore.Tools
project.json innehållet i ditt project.json till detta:
"frameworks": {
"net46": {
},
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
}
}
}
}
Steg 4 - Skapa databasmodellen
För att generera databasen, kör följande kommando i Package Manager Console (Glöm inte att ändra anslutningssträngen till din databas)
Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer
Detta kommer att ge dig felet om startprojekt:
För detta måste du lägga till samma referenser som du lagt till i Class Library till. NET Web App
Så öppna ditt project.json för project.json ,
Lägg till under dependencies :
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
och under tools lägg till:
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
Spara filen efter att ha gjort ändringarna.
Så här ser mitt projekt.json ut
Kör sedan igen kommandot i Package Manager Console mot klassbiblioteket:
Om du inte redan har lagt till referensen för ditt klassbibliotek i webbappen kommer du att få det här felet:
för att lösa detta lägg till referens till ditt klassbibliotek till din webbapp:
Till sist
Kör kommandot igen - i Package Manager Console :
Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Detta bör skapa enheter under mappen Modeller i klassbiblioteket
Passera en anslutningssträng
I mitt fall här har vi en Multi Tenant-applikation, där varje klient har sin egen databas, t.ex. Client_1, Client_2, Client_3. Så anslutningssträngen måste vara dynamisk.
Så vi lägger till en anslutningsträngegenskap till en konstruktör och överförde den till Context i OnConfiguring metoden
public partial class ClientContext
{
private readonly string _connectionString;
public ClientContext(string connectionString) : base()
{
_connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_connectionString);
}
}
och använde det så här:
public void TestConnection()
{
var clientId = 1;
var connectionString = string.Format("Server=192.168.0.211; Database=Client_{0}; user id= USER; password = PWD;", clientId);
using (var clientContext = new ClientContext(connectionString))
{
var assets = clientContext.Users.Where(s => s.UserId == 1);
}
}
Modell, fråga och spara data
Modell
Med EF Core utförs datatillgång med en modell. En modell består av entitetsklasser och en härledd kontext som representerar en session med databasen, så att du kan fråga och spara data.
Du kan skapa en modell från en befintlig databas, handkoda en modell för att matcha din databas eller använda EF Migrations för att skapa en databas från din modell (och utveckla den när din modell förändras över tid).
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
namespace Intro
{
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}
att fråga
Instanser av dina entitetsklasser hämtas från databasen med hjälp av Language Integrated Query (LINQ).
using (var db = new BloggingContext())
{
var blogs = db.Blogs
.Where(b => b.Rating > 3)
.OrderBy(b => b.Url)
.ToList();
}
Spara data
Data skapas, raderas och modifieras i databasen med hjälp av instanser av dina entitetsklasser.
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
db.SaveChanges();
}
Ta bort data
Instanser av dina entitetsklasser hämtas från databasen med hjälp av Language Integrated Query (LINQ).
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Attach(blog);
db.Blogs.Remove(blog);
db.SaveChanges();
}
Uppdatering av data
Data uppdateras i databasen med hjälp av instanser av dina entitetsklasser.
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
var entity = db.Blogs.Find(blog);
entity.Url = "http://sample2.com";
db.SaveChanges();
}








