2011-02-02 102 views
2

EntityDataSource _Insertedイベントが発生したときに、純粋な接合テーブル(他のテーブルにFKのみを含む)を作成する必要があります。Entity Frameworkナビゲーションプロパティを使用する方法

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

* CmsJobsUsers PURE JUNCTION表され、それがEFモデル内のエンティティとして表現されていません。

私は、データベース内のテーブル3を持っています。

私のコードは、このデータを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_Usersを持つべきであるとaspnet_Userエンティティが持つべきナビゲーションプロパティCmsJobs。データベースからユーザーをフェッチする必要があるエンティティを接合テーブルに挿入する最も簡単な方法は、ユーザーCmsJobsCmsJobを追加し、ユーザーを保存します。

ここでも、DBに何かを永続化するあなたの試みを示していないので、私は提案を書きます:今、それが動作

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

関連する問題