2013-08-20 48 views
2

我想在用戶中添加和編輯項目。我用這個代碼:無法定義兩個對象之間的關係

DataContext db = new DataContext(); 
private void Save() 
{ 
    User user = (SelectedUser == null) ? new User() : db.User.Find(SelectedUser.UserName); 
    user.FirstName = FirstName; 
    user.CcRowIndex = CcRowIndex; 
    user.Image = Image; 
    user.LastName = LastName; 
    user.OrganizationalPostId = OrganizationalPost; 
    user.OrganizationalUnitId = OrganizationalUnit; 
    user.Password = Password; 
    user.Signature = Signature; 
    user.SubsetUsers = SubsetUsersList; 
    user.UserName = UserName; 
    if (SelectedUser == null) 
    { 
     db.User.Add(user); 
    } 

    db.SaveChanges(); 
} 

我添加項目,但是當我編輯的項目,我得到錯誤:

The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects.+ savechange of datacontext

+0

[EF4錯誤:兩個對象之間的關係無法定義,因爲它們連接到不同的ObjectContext對象](http://stackoverflow.com/questions/4046843/ef4-errorthe-relationship-between-the - 兩個對象-不能待定義-因爲-的) –

回答

1

這將有助於看到您的User類的定義,但是,我可以採取猜測。

假設:

  • SubsetUsersList屬性是其他User實例

SubsetUsersList的集合從DbContext的另一個實例填充。當您嘗試在DbContext的新實例中使用這些實體時,EF會抱怨。

// SubsetUsersList populated by unknown DbContext instance 
user.SubsetUsers = SubsetUsersList; 

// db instance throws exception 
db.SaveChanges(); 

另一種方法是在當前db實例加載這些用戶:

// Guessing at the definition of your User class 
var subsetUserIds = SubsetUsersList.Select(u => u.UserId).ToArray(); 
user.SubsetUsers = db.User.Where(u => subsetUserIds.Contains(u.UserId).ToList(); 

這是效率不高,但可以幫助你瞭解這裏的問題。

相關問題