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

wprowadź opis zdjęcia tutaj

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 )

wprowadź opis zdjęcia tutaj

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; }
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow