Как я могу убедиться, что новая таблица будет создана после миграции? - PullRequest
0 голосов
/ 21 апреля 2020

Я запустил 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 сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...