Поиск…


Создание модели из базы данных

В Visual Studio перейдите в свой Solution Explorer затем нажмите « Project вы добавите модель « Правая» мышь . Выберите ADO.NET Entity Data Model

введите описание изображения здесь

Затем выберите « Generate from database и нажмите « Next в следующем окне « New Connection... и укажите базу данных, из которой вы хотите сгенерировать модель (может быть MSSQL , MySQL или Oracle )

введите описание изображения здесь

После этого нажмите « Test Connection чтобы узнать, правильно ли настроено подключение (не переходите, если он не работает здесь).

Нажмите « Next затем выберите нужные параметры (например, стиль для генерации имен сущностей или добавления внешних ключей).

Нажмите « Next раз, на этом этапе у вас должна быть модель, созданная из базы данных.

Добавление аннотаций данных к сгенерированной модели

В стратегии генерации кода T4, используемой Entity Framework 5 и выше, атрибуты аннотации данных по умолчанию не включены. Чтобы включить в аннотации данных поверх некоторого свойства каждой модели восстановления, открыть файл шаблона входит в EDMX (с .tt расширением) , а затем добавить , using заявление по UsingDirectives способом , как показано ниже:

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

В качестве примера предположим, что шаблон должен включать KeyAttribute который указывает свойство первичного ключа. Чтобы автоматически вставить KeyAttribute во время регенерации модели, найдите часть кода, содержащего codeStringGenerator.Property как codeStringGenerator.Property ниже:

var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

Затем вставьте if-условие для проверки свойства ключа следующим образом:

var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
             if (ef.IsKey(edmProperty)) { 
#>    [Key]
<#      } 
#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

Применяя изменения выше, все созданные классы моделей будут иметь KeyAttribute первичного ключа после обновления модели из базы данных.

До

using System;

public class Example
{
    public int Id { get; set; }
    public string Name { get; set; }
}

После

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow