2011-02-02 93 views
2

當EntityDataSource _Inserted事件引發時,我需要填充Pure Junction Table(僅包含FK到其他表)。實體框架如何使用導航屬性

我在我的數據庫表3:

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

* CmsJobsUsers是PURE結合表並且不表示爲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; 
} 

任何想法?謝謝你的幫助!

這裏有用的資源: 但我不能implment它: http://thedatafarm.com/blog/data-access/inserting-many-to-many-relationships-in-ef-with-or-without-a-join-entity/

回答

2

你不顯示您的EDM,但你的CmsJob實體應該有一個導航屬性aspnet_Usersaspnet_User實體應該有一個導航屬性CmsJobs。將實體插入交接表的最簡單方法是,您需要從DB中提取用戶,將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(); 
    } 
} 
+0

由於現在它的工作原理 – GibboK 2011-02-04 08:58:14