我創建了POCO類,它是在EDMX文件當量(類別實體只有一個辦法導航屬性Parent)實體框架4.0更新POCO關係
public class Category {
public int ID {get;set;}
public string Name {get;set;}
public Category Parent {get;set;}
}
我必須跟影響家長財產的CRUD操作的問題:
檢索的樣子:
public void CanRetrieve() {
var category = context.Categories.Where(x => x.ID == id).FirstOrDefault();
cotext.LoadProperty<Category> (category, c => c.Parent);
}
螞蟻工作正常(我與充滿Parent屬性類別對象)
添加的樣子:
public void CanAdd() {
Category cat = new Category();
cat.Name = "cat 1";
cat.Parent = new Category() {ID = 12}; //assuming that in the database there is a record with ID 12
context.Categories.Attach(cat);
context.SaveChanges();
}
還致力於精細
和更新(在DB的新紀錄PARENT_ID字段設置爲12時出現):
public void CanUpdate() {
Category cat = new Category();
cat.Name = "cat 1";
cat.Parent = new Category() {ID = 12}; //assuming that in the database there is a record with ID 12
context.Categories.Attach(cat);
//XXX
context.SaveChanges()
}
做任何事情。如果我用下面的行替換// XXX行:
Context.ObjectStateManager.ChangeObjectState(cat, EntityState.Modified);
Name屬性的值更新形式源對象(我想其他的標量屬性也將是),但家長被忽略,PARENT_ID場在基地保存。
我的問題是:如何在這種情況下我可以告訴上下文我希望Parent屬性值也反映到數據庫,並且可以在不傳遞Parent屬性的所有值的情況下完成(只有一個ID,就像在Add情況)?
最好的問候,
安傑
你說得對,我在急匆匆地砍了代碼,所以我不小心把Attach而不是AddObject添加到CanAdd方法中。對不起,誤導了。 至於CanUpdate,正如我所理解的,我無法將關係狀態設置爲Modified,doeas意味着在我的場景中,我必須刪除舊關係(將其更改爲Deleted),然後將新的Parent實體和關係設置爲Added)? – AndrzejD 2010-12-06 14:22:20