Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a részletes útmutató bemutatja a Code First meglévő adatbázist célzó fejlesztését. A Code First segítségével C# vagy VB.Net osztályokkal definiálhatja a modellt. Opcionálisan további konfigurációk is elvégezhetők az osztályok és tulajdonságok attribútumai vagy egy fluent API használatával.
Előfeltételek
Az útmutató elvégzéséhez telepítve kell lennie a Visual Studio 2012-nek vagy a Visual Studio 2013-nak .
Az Entity Framework Tools for Visual Studio6.1-es (vagy újabb) verziójára is szüksége lesz. Az Entity Framework Tools legújabb verziójának telepítésével kapcsolatos információkért tekintse meg az Entity Framework beszerzése című témakört.
1. Meglévő adatbázis létrehozása
Ha egy meglévő adatbázist céloz meg, az általában már létrejön, de ehhez az útmutatóhoz létre kell hoznunk egy adatbázist a hozzáféréshez.
Hozzuk létre az adatbázist.
A Visual Studio megnyitása
Nézet –> Kiszolgálókezelő
Kattintson a jobb gombbal az adatkapcsolatokra –> Kapcsolat hozzáadása...
Ha még nem csatlakozott adatbázishoz a Server Explorerből, akkor a Microsoft SQL Servert kell adatforrásként választania.
Csatlakozzon a LocalDB-példányhoz, és adja meg a Blogolás nevet az adatbázis neveként
Válassza az OK gombot , és a rendszer megkérdezi, hogy szeretne-e új adatbázist létrehozni, válassza az Igen lehetőséget
Az új adatbázis ekkor megjelenik a Kiszolgálókezelőben, kattintson rá a jobb gombbal, és válassza az Új lekérdezés lehetőséget
Másolja a következő SQL-t az új lekérdezésbe, majd kattintson a jobb gombbal a lekérdezésre, és válassza a Végrehajtás lehetőséget
CREATE TABLE [dbo].[Blogs] (
[BlogId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (200) NULL,
[Url] NVARCHAR (200) NULL,
CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);
CREATE TABLE [dbo].[Posts] (
[PostId] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (200) NULL,
[Content] NTEXT NULL,
[BlogId] INT NOT NULL,
CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);
INSERT INTO [dbo].[Blogs] ([Name],[Url])
VALUES ('The Visual Studio Blog', 'http://blogs.msdn.com/visualstudio/')
INSERT INTO [dbo].[Blogs] ([Name],[Url])
VALUES ('.NET Framework Blog', 'http://blogs.msdn.com/dotnet/')
2. Az alkalmazás létrehozása
Az egyszerűség érdekében létrehozunk egy alapszintű konzolalkalmazást, amely a Code First használatával teszi lehetővé az adathozzáférést:
- A Visual Studio megnyitása
- Fájl –> Új –> Projekt...
- Válassza a Windows lehetőséget a bal oldali menüből és a konzolalkalmazásból
- Adja meg a CodeFirstExistingDatabaseSample nevet
- Válassza az OK gombot
3. Visszafejtőmérnöki modell
Az Entity Framework Tools for Visual Studio segítségével létrehozunk néhány kezdeti kódot az adatbázishoz való leképezéshez. Ezek az eszközök csak olyan kódot hoznak létre, amelyet tetszés szerint kézzel is beírhat.
Projekt –> Új elem hozzáadása...
Válassza ki az Adatokat a bal oldali menüből, majd ADO.NET Entitás adatmodellt
Adja meg a BloggingContext nevet, és kattintson az OK gombra
Ez elindítja az Entitás adatmodell varázslót
Válassza ki az adatbázis első kódját, majd kattintson a Tovább gombra
Válassza ki az első szakaszban létrehozott adatbázishoz való kapcsolatot, és kattintson a Tovább gombra
Kattintson a Táblák melletti jelölőnégyzetre az összes tábla importálásához, majd a Befejezés gombra
Ha a visszafejtőmérnöki folyamat befejeződött, számos elem lesz hozzáadva a projekthez, vessünk egy pillantást a hozzáadott elemekre.
Konfigurációs fájl
Egy App.config fájl lett hozzáadva a projekthez, ez a fájl tartalmazza a meglévő adatbázis kapcsolati sztringét.
<connectionStrings>
<add
name="BloggingContext"
connectionString="data source=(localdb)\mssqllocaldb;initial catalog=Blogging;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
</connectionStrings>
A konfigurációs fájl néhány egyéb beállítását is látni fogja, ezek az alapértelmezett EF-beállítások jelzik, hogy a Code First hol hozzon létre adatbázisokat. Mivel egy meglévő adatbázishoz van megfeleltetve, a rendszer figyelmen kívül hagyja ezeket a beállításokat az alkalmazásban.
Származtatott környezet
Egy BloggingContext osztály lett hozzáadva a projekthez. A környezet egy munkamenetet jelöl az adatbázissal, amely lehetővé teszi az adatok lekérdezését és mentését. A környezet egy DbSet<TEntity-t> tesz elérhetővé a modell minden típusához. Azt is megfigyelheti, hogy az alapértelmezett konstruktor egy alapkonstruktort hív meg a név= szintaxis használatával. Ez jelzi a Code First számára, hogy az ehhez a környezethez használandó kapcsolati sztringet be kell tölteni a konfigurációs fájlból.
public partial class BloggingContext : DbContext
{
public BloggingContext()
: base("name=BloggingContext")
{
}
public virtual DbSet<Blog> Blogs { get; set; }
public virtual DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
Mindig a név= szintaxist kell használnia, amikor kapcsolati sztringet használ a konfigurációs fájlban. Ez biztosítja, hogy ha a kapcsolati sztring nincs jelen, akkor az Entity Framework hibát jelez ahelyett, hogy konvenció alapján új adatbázist hozna létre.
Modellosztályok
Végül hozzáadtunk egy Blog és Post osztályt is a projekthez. Ezek azok a tartományosztályok, amelyek alkotják a modellt. Az osztályokra alkalmazott adatjegyzetek olyan konfiguráció megadására vonatkoznak, ahol a Code First konvenciók nem összhangban vannak a meglévő adatbázis szerkezetével. Például megjelenik a StringLength megjegyzés a Blog.Name és Blog.Url esetében, mivel az adatbázisban a maximális hossz 200 (a Code First alapértelmezés szerint az adatbázis-szolgáltató által támogatott maximális hossz használatos – nvarchar(max) az SQL Server esetében).
public partial class Blog
{
public Blog()
{
Posts = new HashSet<Post>();
}
public int BlogId { get; set; }
[StringLength(200)]
public string Name { get; set; }
[StringLength(200)]
public string Url { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
4. Adatok olvasása és írása
Most, hogy rendelkezünk egy modellel, itt az ideje, hogy használjuk néhány adat eléréséhez. Implementálja a Main metódust Program.cs az alább látható módon. Ez a kód létrehoz egy új példányt a környezetünkben, majd egy új blog beszúrására használja. Ezután egy LINQ-lekérdezéssel lekéri az összes blogot az adatbázisból, cím szerint betűrendbe rendezve.
class Program
{
static void Main(string[] args)
{
using (var db = new BloggingContext())
{
// Create and save a new Blog
Console.Write("Enter a name for a new Blog: ");
var name = Console.ReadLine();
var blog = new Blog { Name = name };
db.Blogs.Add(blog);
db.SaveChanges();
// Display all Blogs from the database
var query = from b in db.Blogs
orderby b.Name
select b;
Console.WriteLine("All blogs in the database:");
foreach (var item in query)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
Most már futtathatja és tesztelheti az alkalmazást.
Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
.NET Framework Blog
ADO.NET Blog
The Visual Studio Blog
Press any key to exit...
Mi történik, ha megváltozik az adatbázis?
A Code First to Database varázsló úgy lett kialakítva, hogy létrehozza a kezdőpontként szolgáló osztályok halmazát, amelyet aztán finomíthat és módosíthat. Ha az adatbázis séma megváltozik, szerkesztheti manuálisan az osztályokat, vagy végrehajthat egy újabb visszafejtési folyamatot az osztályok felülírásához.
Kód első migrálása meglévő adatbázisba
Ha a Code First Migrationst egy meglévő adatbázissal szeretné használni, tekintse meg a Kód első áttelepítése meglévő adatbázisba című témakört.
Összefoglalás
Ebben az útmutatóban a Code First meglévő adatbázissal történő fejlesztését tekintettük át. Az Entity Framework Tools for Visual Studio segítségével visszafejtettünk egy osztályhalmazt, amely az adatbázisra volt leképezve és adatok tárolására, valamint lekérésére használható.