Дополнительное свойство со списком внешних ключей - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть два класса, Персона и Событие.Несколько человек могут подписаться на событие и закодировано в виде списка внешних ключей.У меня вопрос, как правильно добавить дополнительную переменную, такую ​​как платный бул или что-то еще?Я предполагаю, что мне придется создать отдельный класс со ссылкой на внешний ключ как для Person, так и для Event, но я хотел убедиться, что не было никакого причудливого способа добавить дополнительное свойство.

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Да, вы делаете это правильно.Так как это отношение N to N, ему нужна присоединяемая сущность, как вы указали.Присоединяемая сущность будет иметь два основных свойства (внешний ключ), включая PersonId и EventId, а также другие необязательные свойства (в вашем случае Paid).

Обновление:

Что касается поиска причудливого пути, ответ - нет. При разработке базы данных вы ограничены используемой моделью данных, которая здесь является реляционной моделью данных.EF и другие виды ORM являются просто инструментами для связи между приложением и базой данных.
Однако, если вы определите один внешний ключ в классе Person с типом Collection<Event>, а другой в классе Event с типом Collection<Person>Каркас сущности автоматически создаст объединяющую таблицу с двумя внешними ключами.Но это не то, что вы хотите, потому что вам нужно добавить больше свойств в присоединяющуюся таблицу.

0 голосов
/ 22 февраля 2019

Если бы у Person было много событий, то у меня была бы структура моего личного класса, как показано ниже

public class Person
{
    public int Id { get; set; }

    // each person have many events
    public List<EventRelation> Events { get; set; }
}

public class EventRelation
{
    public int Id { get; set; }

    public Events Event { get; set; }

    // Person Id forgen Key
    public int Person_Id { get; set; }

    // Events Id forgen Key
    public int Event_Id { get; set; }
}


public class Events
{
    public int Id { get; set; }

    public string EventType { get; set; }

}
0 голосов
/ 22 февраля 2019

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

class Person
{
   public int Id {get; set;}
}

предположим, что вы добавили DateOfBirth

class Person
{
   public int Id {get; set;}
   public DateTime DateOfBirth {get; set;}
}

, затем

dotnet add migration 'BirthDate'
dotnet ef database update
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...