Я делаю проект самостоятельно.Позвольте мне описать это: я пытаюсь настроить базу данных социальной сети в SQL Express с Entity Framework.Я создал таблицы в базе данных, а затем использовал EF для генерации моделей из базы данных.Он генерирует это, но немного не так.
Я сосредоточился в основном на дружеской части базы данных.Я создал таблицу под названием USERS.Затем я сделал стол под названием ДРУЖБА.Таблица FRIENDSHIP имеет 3 атрибута.Это FriendShipID, User1_ID и User2_ID.FriendShipID - это первичный ключ, остальные - FOREIGN KEY, ссылающиеся на таблицу UserID UserER.Когда я генерирую модель в VS с EF, в классе USER есть свойства:
public virtual ICollection<FRIENDSHIP> FRIENDSHIP{ get; set; }
и
public virtual ICollection<FRIENDSHIP> FRIENDSHIP1{ get; set; }
, но я хочу только 1 свойство Friendship.Как я могу этого достичь?Это проблема сопоставления?
SQL:
CREATE TABLE USERS
(
UserID int NOT NULL PRIMARY KEY,
Age int NOT NULL,
Nickname VARCHAR(25) NOT NULL
);
CREATE TABLE FRIENDSHIP
(
FriendShipID int NOT NULL PRIMARY KEY,
User1_ID int NOT NULL FOREIGN KEY REFERENCES USERS (UserID),
User2_ID int NOT NULL FOREIGN KEY REFERENCES USERS (UserID)
);
C # с EF: -В классе Users
public virtual ICollection<FRIENDSHIP> FRIENDSHIP{ get; set; }
public virtual ICollection<FRIENDSHIP> FRIENDSHIP1{ get; set; }
-В классе ModelBuilder
modelBuilder.Entity<USERS>()
.HasMany(e => e.FRIENDSHIP)
.WithRequired(e => e.User1)
.HasForeignKey(e => e.User1_ID)
.WillCascadeOnDelete(false);
modelBuilder.Entity<USERS>()
.HasMany(e => e.FRIENDSHIP)
.WithRequired(e => e.User2)
.HasForeignKey(e => e.User2_ID)
.WillCascadeOnDelete(false);