Создайте отображение «один ко многим» и «один ко многим к одному» между двумя таблицами в подходе кода 6 - PullRequest
0 голосов
/ 25 января 2020

Я хочу создать две таблицы ниже, используя подход кода Entity Framework 6. Я могу использовать атрибутную нотацию или свободный API или их комбинацию.
В основном я хочу знать, как создать сопоставления между двумя сущностями, чтобы внешние ключи создавались правильно, и каким будет виртуальное свойство в каждой сущности (Icollection или объекте).

Имя таблицы - Родительский

+-------------+-------+-----------------------+
| ColumnName  | Type  |      Constraint       |
+-------------+-------+-----------------------+
| ParentId    | int   | Primary Key           |
| LastChildId | int   | Foreign Key, Nullable |
+-------------+-------+-----------------------+

Примечание- LastChildId столбец содержит последний ChildId , если есть дочерний элемент, соответствующий ParentId in parent table else NULL.

Имя таблицы - Child

+------------+-------+----------------------+
| ColumnName | Type  |      Constraint      |
+------------+-------+----------------------+
| ChildId    | int   | Primary Key          |
| ParentId   | int   | ForeignKey, Not Null |
+------------+-------+----------------------+

Пример

Таблица - Родитель

+----------+-------------+
| ParentId | LastChildId |
+----------+-------------+
|        1 | Null        |
|        2 | 1           |
|        3 | 3           |
+----------+-------------+

Таблица - Ребенок

+---------+----------+
| ChildId | ParentId |
+---------+----------+
|       1 |        2 |
|       2 |        3 |
|       3 |        3 |
+---------+----------+

Дополнительная информация:

  • С родителем может быть связано несколько дочерних элементов, т. Е. Отображение один-ко-многим (родитель-потомок). Дочерняя виртуальная собственность должна быть ICollection.
  • С одним дочерним элементом может быть связан только один родитель, т. Е. Сопоставление один к одному (дочерний элемент к родительскому элементу).

1 Ответ

0 голосов
/ 27 января 2020
public class Child
{
    public int ChildID { get; set; }

    public int ParentID { get; set; }  //this is to name your key properly, 
                                       //can be omitted, but EF will create field 
                                       //with name smth like Parent_ParentId

    public virtual Parent Parent { get; set; } // **one**-to-many
}

public class Parent
{
    public int ParentId { get; set; }

    public virtual ICollection<Child> Child { get; set; } //one-to-**many**

    public int LastChildID { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...