ADO Entity Builder не будет генерировать класс для таблицы только с внешними ключами - PullRequest
0 голосов
/ 14 июля 2020

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

modelBuilder.Entity<User>()
    .HasMany(e => e.Categories)
    .WithMany(e => e.Users)
    .Map(m => m.ToTable("UserCategory").MapLeftKey("UserID").MapRightKey("ID"));

Но я не знаю, как использовать это для добавления или удаления из этой таблицы, поскольку он не отображается как класс когда я кодирую.

Мои таблицы:

CREATE TABLE [User] 
(
    ID NVARCHAR(128) PRIMARY KEY,
    FirstName VARCHAR(255) NOT NULL,
    LastName VARCHAR(255),
    JoinDate DATETIME,
    ZipCode VARCHAR(25),
    SearchRadius INT,
    LoginToBusinessSide BIT
);

/*The categories businesses can fall under. */
CREATE TABLE Category 
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    [Name] VARCHAR(255) UNIQUE NOT NULL,
);

/*The categories chosen by a specific user to get notified of*/
CREATE TABLE UserCategory 
(
    ID INT FOREIGN KEY REFERENCES Category(ID),
    UserID NVARCHAR(128) FOREIGN KEY REFERENCES [User](ID),
    CONSTRAINT PK_UserCategory PRIMARY KEY (ID, UserID)
);

Как мне заставить UserCategory отображаться как отдельный класс, чтобы я мог легко получить к нему доступ?

Я хочу иметь к нему доступ, как к любому другому классу:

db.UserCategories.ID = 

Как я могу

1 Ответ

0 голосов
/ 20 июля 2020

ADO не создает класс для моей таблицы многие ко многим, но я все еще могу получить к нему доступ. Чтобы добавить к нему новые категории, я использую этот код:

for(var i = 0; i < categories.Length; ++i)
{
   var user = db.Users.Find(thisUser.ID);
   var cat = db.Categories.Find(categories[i]);
   user.Categories.Add(cat);
}

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

Если вы точно понимаете, почему это работает, или если есть лучший способ, оставьте комментарий.

...