Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Från och med .NET Framework version 4 stöder Entity Framework datadefinitionsspråk (DDL). På så sätt kan du skapa eller ta bort en databasinstans baserat på anslutningssträngen och metadata för lagringsmodellen (SSDL).
Följande metoder använder ObjectContext anslutningssträngen och SSDL-innehållet för att utföra följande: skapa eller ta bort databasen, kontrollera om databasen finns och visa det genererade DDL-skriptet:
Anmärkning
Körningen av DDL-kommandona förutsätter tillräckliga behörigheter.
Metoderna som tidigare listade delegerar det mesta av arbetet till den underliggande ADO.NET dataprovidern. Det är leverantörens ansvar att se till att namngivningskonventionen som används för att generera databasobjekt överensstämmer med konventioner som används för frågor och uppdateringar.
I följande exempel visas hur du genererar databasen baserat på den befintliga modellen. Det lägger också till ett nytt entitetsobjekt i objektkontexten och sparar det sedan i databasen.
Förfaranden
Så här definierar du en databas baserat på den befintliga modellen
Skapa en konsolapplikation.
Lägg till en befintlig modell i ditt program.
- Lägg till en tom modell med namnet
SchoolModel. Information om hur du skapar en tom modell finns i avsnittet Så här skapar du en ny .edmx-fil .
Filen SchoolModel.edmx läggs till i projektet.
Kopiera koncept- och lagrings- och mappningsinnehållet för skolmodellen från ämnet Skolmodell .
Öppna filen SchoolModel.edmx och klistra in innehållet i taggarna
edmx:Runtime.
- Lägg till en tom modell med namnet
Lägg till följande kod i huvudfunktionen. Koden initierar anslutningssträngen till databasservern, visar DDL-skriptet, skapar databasen, lägger till en ny entitet i kontexten och sparar ändringarna i databasen.
// Initialize the connection string. String connectionString = "..."; using (SchoolEntities context = new SchoolEntities(connectionString)) { try { if (context.DatabaseExists()) { // Make sure the database instance is closed. context.DeleteDatabase(); } // View the database creation script. Console.WriteLine(context.CreateDatabaseScript()); // Create the new database instance based on the storage (SSDL) section // of the .edmx file. context.CreateDatabase(); // The following code adds a new objects to the context // and saves the changes to the database. Department dpt = new Department { Name = "Engineering", Budget = 350000.00M, StartDate = DateTime.Now }; context.Departments.AddObject(dpt); // An entity has a temporary key // until it is saved to the database. Console.WriteLine(dpt.EntityKey.IsTemporary); context.SaveChanges(); // The object was saved and the key // is not temporary any more. Console.WriteLine(dpt.EntityKey.IsTemporary); } catch (InvalidOperationException ex) { Console.WriteLine(ex.InnerException.Message); } catch (NotSupportedException ex) { Console.WriteLine(ex.InnerException.Message); } }' Initialize the connection string. Dim connectionString As String = "metadata=res://*/School.csdl|res://*/School.ssdl|res://*/School.msl;provider=System.Data.SqlClient;" & "provider connection string=""Data Source=.;Initial Catalog=School;Integrated Security=True;MultipleActiveResultSets=True""" Using context As New SchoolEntities(connectionString) Try If context.DatabaseExists() Then ' Make sure the database instance is closed. context.DeleteDatabase() End If ' View the database creation script. Console.WriteLine(context.CreateDatabaseScript()) ' Create the new database instance based on the storage (SSDL) section ' of the .edmx file. context.CreateDatabase() ' The following code adds a new objects to the context ' and saves the changes to the database. Dim dpt As New Department() context.Departments.AddObject(dpt) ' An entity has a temporary key ' until it is saved to the database. Console.WriteLine(dpt.EntityKey.IsTemporary) context.SaveChanges() ' The object was saved and the key ' is not temporary any more. Console.WriteLine(dpt.EntityKey.IsTemporary) Catch ex As InvalidOperationException Console.WriteLine(ex.InnerException.Message) Catch ex As NotSupportedException Console.WriteLine(ex.InnerException.Message) End Try End Using