Я запустил asp. net основанный на ядре хобби-проект, чтобы узнать больше о. net ядре и ядре платформы сущностей. Мой вопрос заключается в следующем: Когда я создаю новый класс домена для моей модели сущности, мне нужно вручную написать создание таблицы в свободном API?
Или я могу заставить ef core выполнять генерацию таблицы на основе Атрибуты [Таблица], [Столбец], [Внешний ключ]? Если да, то как?
Например:
У меня есть три класса доменов:
Класс для компаний:
[Table("Companies")]
public class Company
{
[Column("Id")]
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("Name")]
public string Name { get; set; }
[Column("TaxNumber")]
public string TaxNumber { get; set; }
[Column("PremiseId")]
public int PremiseId { get; set; }
[Column("ContactId")]
public int ContactId { get; set; }
[ForeignKey("CompanyId")]
public ICollection<ApplicationUser> ApplicationUsers { get; set; }
public ICollection<ContactPeople> ContactPeople { get; set; }
public ICollection<Premise> Premises { get; set; }
}
Класс для контакты компании:
[Table("ContactPeople")]
public class ContactPeople
{
[Column("Id")]
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("FirstName")]
public string FirstName { get; set; }
[Column("LastName")]
public string LastName { get; set; }
[Column("Email")]
public string Email { get; set; }
[Column("PhoneNumber")]
public string PhoneNumber { get; set; }
// <summary>
// Navigation property to the Company.
// </summary>
[ForeignKey("Id")]
public Company Company { get; set; }
}
Класс для помещений компании:
[Table("Premises")]
public class Premise
{
[Column("Id")]
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("ZipCode")]
public int ZipCode { get; set; }
[Column("City")]
public string City { get; set; }
[Column("StreetName")]
public string StreetName { get; set; }
[Column("StreetNumber")]
public string StreetNumber { get; set; }
// <summary>
// Navigation property to the Company.
// </summary>
[ForeignKey("Id")]
public Company Company { get; set; }
}
Я не уверен, правильно ли это. Я хотел бы создать следующую связь между таблицами: ContactPeople --- (n..1) -> Company <- (1..n) - Предпосылки. </p>
Я также добавил следующие строки в моем классе DbContext:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Company>().ToTable("Companies");
builder.Entity<ContactPeople>().ToTable("ContactPeople");
builder.Entity<Premise>().ToTable("Premises");
}
Несмотря на все эти «усилия», мои таблицы не генерируются, когда я создаю миграцию и выполняю обновление базы данных на основе этой миграции, потому что файл миграции делает не содержат таблицы определений. Нужно ли мне записывать эти определения таблиц в свободном API по одному или есть ли способ заставить ef сделать это?