Разработка базы данных с Asp.Net Core Identity «один ко многим» и «один к одному» - PullRequest
0 голосов
/ 07 мая 2019

У меня возникла небольшая проблема с дизайном моей таблицы в Asp.Net Core Identity. На данный момент у меня есть User table, который наследуется от IdentityUser. Все пользователи приложения должны быть внутри этой таблицы, чтобы войти. Теперь у меня есть еще 2 таблицы:

Таблица пользователей:

public class User : IdentityUser
{
    [Required]
    [StringLength(50)]
    public string Name { get; set; }
    [Required]
    [StringLength(50)]
    public string Title { get; set; }
    ...
}

Таблица драйверов:

public class Driver
{
    [Required]
    [StringLength(50)]
    public string Car{ get; set; }
    [Required]
    [StringLength(50)]
    public string LicenseNr { get; set; }
    ...
}

Таблица клиентов:

public class Customer
{
    [Required]
    [StringLength(50)]
    public int Id { get; set; }
    [Required]
    [StringLength(50)]
    public string Adress { get; set; }
    ...
}

В основном каждый драйвер является пользователем, но не каждый пользователь является драйвером. С другой стороны, один клиент может иметь несколько пользователей. Если у пользователя есть пользователь, он не будет водителем.

Я думал, что класс Driver будет наследоваться от класса User , поскольку он должен иметь те же свойства, что и у пользователя, плюс некоторые дополнительные. И клиент должен иметь отношение один-ко-многим .

Но если я добавлю внешний ключ CustomerId в таблицу User, это означает, что Driver также будет иметь это свойство из-за наследования и не будет иметь особого смысла.

Любые предложения о том, как разработать эти отношения?

(из-за простоты я удалил некоторые свойства)

...