Entity Framework
Pierwsza generacja modelu bazy danych
Szukaj…
Generowanie modelu z bazy danych
W Visual Studio
przejdź do Solution Explorer
a następnie kliknij Project
którego chcesz dodać model Prawą myszą . Wybierz ADO.NET Entity Data Model
Następnie wybierz Generate from database
i kliknij Next
w następnym oknie kliknij New Connection...
i wskaż bazę danych, z której chcesz wygenerować model (Może to być MSSQL
, MySQL
lub Oracle
)
Po wykonaniu tej czynności kliknij Test Connection
aby sprawdzić, czy poprawnie skonfigurowałeś połączenie (nie idź dalej, jeśli tutaj się nie powiedzie).
Kliknij przycisk Next
a następnie wybierz żądane opcje (np. Styl generowania nazw jednostek lub dodawania kluczy obcych).
Kliknij ponownie przycisk Next
, w tym momencie powinieneś mieć model wygenerowany z bazy danych.
Dodawanie adnotacji danych do wygenerowanego modelu
W strategii generowania kodu T4 używanej przez Entity Framework 5 i nowsze atrybuty adnotacji danych nie są domyślnie uwzględniane. Aby dołączyć adnotacje danych na szczycie niektórych właściwości każdego modelu regenerację, otwarty plik szablonu dołączonego EDMX (z .tt
rozszerzenia), a następnie dodać using
oświadczenia pod UsingDirectives
metody jak poniżej:
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>
(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code);
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
using System.ComponentModel.DataAnnotations; // --> add this line
Załóżmy na przykład, że szablon powinien zawierać KeyAttribute
który wskazuje właściwość klucza podstawowego. Aby wstawić KeyAttribute
automatycznie podczas regeneracji modelu, znajdź część kodu zawierającego codeStringGenerator.Property
jak poniżej:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Następnie wstaw warunek if, aby sprawdzić właściwość klucza w następujący sposób:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
if (ef.IsKey(edmProperty)) {
#> [Key]
<# }
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Po zastosowaniu powyższych zmian wszystkie wygenerowane klasy modeli będą miały KeyAttribute
na swojej właściwości klucza podstawowego po zaktualizowaniu modelu z bazy danych.
Przed
using System;
public class Example
{
public int Id { get; set; }
public string Name { get; set; }
}
Po
using System;
using System.ComponentModel.DataAnnotations;
public class Example
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}