2011-07-11 52 views
0

我想用Entity Framework將Users表中的用戶添加到實體框架中。EntityReference具有與此對象的EntityKey不匹配的EntityKey屬性值

我添加了所有的參考即,

this.UserRolesReference.EntityKey = new System.Data.EntityKey("KEntities.UserRoles", "UserRoles", roleID); 

this.OfficeMasterReference.EntityKey = new System.Data.EntityKey("KEntities.OfficeMaster", "SROCode", SROCode); 

this.UserDesignationsReference.EntityKey = new System.Data.EntityKey("KEntities.UserDesignations", "UserDesignations", designationId); 

當我這樣做

context.AddObject(this.GetType().Name.ToString(), this);[ this is object of Users] 

它給了我一個錯誤

的對象無法添加或連接,因爲它的EntityReference都有不匹配的的EntityKey屬性值此對象的EntityKey。

Users表只有與UserRolesUserDesignations並在導航屬性它顯示CustomPermissionsUsersKModel.edmx文件OfficeMaster

儘管如此,UserLog

CustomPermissionsUserLog關係有關聯Users但我沒有在它們中插入任何值。

預先感謝您

+0

爲什麼你需要修改EntityKey,我認爲我們不應該直接引用或修改它,我們應該只能訪問我們的類和屬性,並讓EF管理一切。 –

+0

@akash謝謝你的回覆,如果我在users表中插入記錄的roleID字段不存在於用戶(生成的類)中,要插入role_id我必須修改實體鍵。 –

回答

1

在實體框架,你不應該改變或手動設置角色ID,而不是必須設置導航屬性和角色ID將被正確更新。

Role adminRole = GetTheAdminRole(); // get instance of Role 

User newUser =new User(); 

context.Users.Add(newUser); 
newUser.Role = adminRole; 

context.SaveChanges(); 
+0

感謝它幫助了我很多,我解決了這個問題 –

相關問題