Entity Framework. Net Core 3.1 - Code First против Scaffolding - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь реализовать модель в Code First для этой основы c сущностей:

public class CompanyType{

    public int Id {get;set;}
    public string CompanyType {get;set;}
}

public class Company{

    public int Id {get;set;}
    public string Company {get;set;}
    public string idCompanyType {get;set;} //Related 1-1 to CompanyType 
}

public class Employee{
    public int Id {get;set;}
    public string Company {get;set;}
    public int idCompany {get;set;}  // --> Here I have to relate idCompany with CompanyId ( 1 company , N Employee
}

Вопросы:

  1. Что является правильным способ реализации отношений в Code First?
  2. Поскольку база данных приложения, которую я должен реализовать, будет очень большой, может быть хорошим подходом является проектирование базы данных в SqlServer, а затем переход к созданию таблиц?

Благодаря поддержке

Ответы [ 3 ]

2 голосов
/ 09 февраля 2020
public class CompanyType{
    public int Id {get;set;}
    public string CompanyType {get;set;}
}

public class Company{

    public Company()
    {
        Employees = new HashSet<Employee>();
    }

    public int Id {get;set;}
    public string Company {get;set;}
    public int CompanyTypeID
    public virtual CompanyType CompanyType {get;set;}
    public virtual ICollection<Employee> Employees { get; set; }
}

public class Employee {

    public int Id {get;set;}
    public int CompanyID {get;set;}
    public virtual Company Company {get;set;}     
}

public class SomeContext : DbContext {
    public SomeContext() : base("SomeContext")
    {
    }
    public DbSet<CompanyType> CompanyTypeSet { get; set; }
    public DbSet<Employee> EmployeeSet { get; set; }
    public DbSet<Company> CompanySet { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

Это в основном, как сначала настроить ваши отношения в коде EF

Сводка

  1. Создать модель данных
  2. Создать контекст базы данных
  3. Настроить EF
  4. Сначала код

    для второй части вашего вопроса вы можете обратиться к этим ссылкам, чтобы взвесить ваши варианты

    В чем преимущество CodeFirst перед Database First

    EF-код-первый подход к базе данных-первый подход

    3 причины использовать код первый дизайн

1 голос
/ 03 февраля 2020

1) Без комментариев, так как я никогда им не пользуюсь.

2) Подход, основанный на базе данных, наиболее эффективен. Экономьте много своего времени. Да, спроектируйте таблицы на SQL сервере, затем запустите Scaffold-DbContext.

1 голос
/ 03 февраля 2020

Насколько моя точка зрения, должна зависеть от человека, от того, насколько ему комфортно. Если вы хорошо разбираетесь в SQL, спроектируйте сначала db, а затем scaffold. Если вы хорошо владеете c#, используйте первый подход к коду

...