2010-02-02 143 views
2

我在使用實體框架更新數據庫中的對象時遇到問題。帶有實體框架的ASP.NET MVC - UpdateException

首先,這個概念是:

用戶可以是一個組的成員,因此,一組中包含的用戶。

要在數據庫建模,我有以下結構:

用戶: ID 名稱 等

組: ID 名稱

GroupMembers: 組ID 用戶名

GroupMembers中的這兩個字段都是與用戶ID和組ID相關的外鍵。當我將它加載到Entity Framework中時,它的建模正確性在於Group對象具有User對象列表,並且每個User對象都有一個Group對象列表。

然而,當我去將用戶添加到組,我得到以下問題:

var group = DAO.GetGroup(GroupID); 
var user = DAO.GetUser(UserID); 
group.Users.Add(user); 
conn.SaveChanges(); 

無法更新EntitySet的 「GroupMembers」,因爲它有一個 DefiningQuery並沒有 元素存在於 元素 中以支持當前操作。

我已經看到各條線上提供諮詢意見的ID字段添加到GroupMembers表 - 但如果我這樣做,我得到了EF映射錯誤抱怨沒有被映射到任何東西的ID。

任何人都可以借出一些其他建議或解決方法嗎?

感謝,

克里斯

+0

「GroupMembers」的PK是什麼?它*應該是*兩列。你定製了「DefiningQuery」嗎? – 2010-02-02 14:50:45

+0

不,我沒有定製過定義查詢,主要是因爲我不知道該如何改變它,並且不想對現有東西產生不利影響。GroupMembers根本沒有主鍵,我添加了一個「ID」列,但映射拋出一個錯誤,因爲它沒有正確映射。 – Chris 2010-02-02 14:56:57

回答

1

GroupMembers取出ID列。創建GroupMembers的PK,由組成GroupIDUserID。現在右鍵單擊您的模型並從數據庫中更新它。

EF設計師需要知道GroupIDUserID這對配對是唯一的,以便獲得正確的基數。

0

通過GroupMembers使得這兩個領域的主鍵,我現在可以添加到表中。

感謝您的幫助:-)

克里斯