Entity Framework
Генерация первой модели базы данных
Поиск…
Создание модели из базы данных
В 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; }
}