Используя Entity Framework, как добавить запись в таблицу сопоставления в отношении «Многие ко многим» - PullRequest
5 голосов
/ 10 августа 2010

У меня есть следующие таблицы (сокращенно для удобства чтения):

Вызов

ID CallerName CallerTime

Категории

ID CategoryName

CallCategories

CallID CategoryID

Когда я смоделировал их в Entity Framework, тальб отображений "CallCategories" был опущен.Я поставлен в тупик о том, как добавить запись в эту таблицу с помощью EF.

Я получил это далеко:

public void AddCategory(int callID, int categoryID)
{
    using (var context = new CSMSEntities())
    {
        try
        {
            //Get the Call
            var call = context.Calls.FirstOrDefault(x => x.callID == callID);

            //Create a new Category
            Category category = new Category();
            category.categoryID = categoryID;

            //Add the Category to the Call
            call.Categories.Add(category);

            context.SaveChanges();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

Использую ли я "Добавить" или "Присоединить".Кроме того, кажется, что я могу подойти к этому неправильно.Должен ли я на самом деле создавать новую категорию?Похоже, что это создаст фактическую запись в таблице категорий, когда я действительно хочу просто добавить запись в таблицу сопоставления «многие ко многим».

Я просто не могу обернуть свой мозг вокругнекоторые из этого материала EF.: - /

ЦЕНА любая помощь!

В ответ на гнома ...

Я думаю, что вы здесь на что-то.Хотя, я бы не назвал «Добавить» (или это «Присоединить»)?Как:

//Get the Call
var call = context.Calls.FirstOrDefault(x => x.callID == callID);

//Find the Category and Add to the Call 
Category category = context.Categories.FirstOrDefault(c => c.categoryID == categoryID);
call.Categories.Add(category);

context.SaveChanges(); 

1 Ответ

2 голосов
/ 10 августа 2010

Я считаю, что нужно добавить модель категории, а не просто добавить идентификатор.попробуй,

//Add the Category to the Call
call.Categories = context.Categories.FirstOrDefault(c => c.categoryId == categoryId);
context.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...