Entity Framework первый подход к коду

Я хочу использовать EF среду Code Firts, я вижу в Интернете, что есть два простых способа, когда создается только DbSet и создается база данных.

public class CompanyContext : DbContext
{
    public CompanyContext() : base("CompanyDatabase") { }

    public DbSet<Collaborator> Collaborators { get; set; }
    public DbSet<Department> Departments { get; set; }
    public DbSet<Manager> Managers { get; set; }
}

Но я также видел, что класс создается с терминологией в конце Map как ManagerMap.

public SeccionMap()
    {
        ToTable("Secciones");
        HasKey(c => c.SeccionId);

    }

Оба создают базу данных, но я думаю, что второй вариант является наиболее подходящим? Вы видите, что у вас больше контроля над тем, что вы хотите сделать.

Может ли кто-нибудь дать мне учебное пособие или ссылку на второй вариант использования подхода первого кода.

0
задан 01.04.2016, 20:17
1 ответ

В действительности оба выбора, о которых ты упоминаешь, могут применяться согласно градусу настройки, в которой ты нуждался бы на mapping

, Если ты определяешь классы, основанные на convenciones, ты мог бы не нуждаться ни в каком классе Map

Коде Фирст Conventions

Сейчас, если есть какой-то аспект в ней definiciГіn mapping, который требует одного, точно подойди allГ - он cuendo ты думаешь, что класс Map, чтобы определять эту настройку

[Энтити Фрамеворк] [Коде Фирст] Создавать простую организацию

В artГ-заду, я это объясняю более подробно, но помни, что mapping производится в классе, что herda EntityTypeConfiguration

public class EtapaMap : EntityTypeConfiguration<Etapa>
{
    ToTable("Etapas");
    HasKey(c => c.EtapaId);
    //resto mapping
}

public class CompanyContext : DbContext
{
    public CompanyContext() : base("CompanyDatabase") { }

    public DbSet<Collaborator> Collaborators { get; set; }
    public DbSet<Department> Departments { get; set; }
    public DbSet<Manager> Managers { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
         modelBuilder.Configurations.Add(new EtapaMap());

         base.OnModelCreating(modelBuilder);
    }
}

Имей в виду OnModelCreating, как определяется конфигурация

0
ответ дан 24.11.2019, 14:40
  • 1
    Леандро, когда используется Property (c = > c. CategoryName).IsRequired ().HasMaxLength (15); IsRequired значит, что необходимо вводить ему данные в компьютер в это поле? и если бы он не пошел, так что он, он помещает вместо IsRequired?, Другая консультация, и если в моем поле моего первичного ключа это estring tama и # 241; или равный 6 может быть мой PK? – Pedro Ávila 31.03.2016, 20:43
  • 2
    просвет, если он помечен как IsRequired - обязательное поле, так как он не позволяет null. Если ты хочешь, чтобы он был opional, просто он определяет поле, как nulable, или если он string, ты не определяешь его ничто – Leandro Tuttini 31.03.2016, 20:47
  • 3
    Но также я могу манипулировать этим с логического слоя, если поля потребовали или нет?, также я могу помещать Property (c = > c. Электронная почта).IsOptional ().HasMaxLength (100); – Pedro Ávila 31.03.2016, 21:14
  • 4
    со слоя логики конечно будь должен aplciar утверждения, но когда ты сохраняешься тот, кто определяет, если поле - requierido или не поле, как это объявляешь в таблице, если поле позволяет недействительные в таблице, это будет опциональная стоимость. Если он может помещать IsOptional (), но равный ты требуешь определять тип информации как nullable. IsOptional () стоится для полей string – Leandro Tuttini 31.03.2016, 21:32