Entity Framework, как использовать свойство навигации - PullRequest
2 голосов
/ 02 февраля 2011

Мне нужно заполнить таблицу чистых соединений (содержащую только FK для других таблиц) при возникновении события EntityDataSource _Inserted.

У меня есть 3 таблицы в моей базе данных:

CmsJobs (JobId)
CmsJobsUsers (JobId FK, UserId FK)*
aspnet_Users (UserId)

* CmsJobsUsers - это ТАБЛИЦА ЧИСТОГО СОЕДИНЕНИЯ , и она не представлена ​​как сущность в модели EF.

Здесь мой код, я НЕ могу сохранить эти данные в CmsJobsUsers.

protected void uxEntityDataSourceCreateJob_Inserted(object sender, EntityDataSourceChangedEventArgs e)
{
    Guid myUserListSelected = new Guid(uxListUsers.SelectedValue);// Guid for UserId in DropDownList 
    CmsJob myJob = (CmsJob)e.Entity; // My new Jobid
    aspnet_Users myUser = new aspnet_Users();
    myUser.UserId = myUserListSelected;
}

Есть идеи?Спасибо за вашу помощь!

Вот полезный ресурс: Но я не могу это сделать: http://thedatafarm.com/blog/data-access/inserting-many-to-many-relationships-in-ef-with-or-without-a-join-entity/

1 Ответ

2 голосов
/ 02 февраля 2011

Вы не показываете свою EDM, но ваша сущность CmsJob должна иметь свойство навигации aspnet_Users, а сущность aspnet_User должна иметь свойство навигации CmsJobs. Самый простой способ вставить объект в соединительную таблицу - это выбрать пользователя из БД, добавить CmsJob в коллекцию CmsJobs пользователей и сохранить пользователя.

Опять же, вы не показываете свою попытку сохранить что-либо в БД, поэтому я напишу предложение:

protected void uxEntityDataSourceCreateJob_Inserted(object sender, EntityDataSourceChangedEventArgs e)
{
    using (var context = new YourEFObjectContext())
    {
        Guid myUserListSelected = new Guid(uxListUsers.SelectedValue);
        CmsJob myJob = (CmsJob)e.Entity; // My new Jobid
        aspnet_Users myUser = context.aspnet_Users.Single(u => u.UserId == myUserListSelected);
        myUser.CmsJobs.Add(myJob);
        context.SaveChanges();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...