我正在首次實施實體框架。我正在處理添加/更新具有父屬性的對象。需要了解實體框架參考狀態
我知道一個實體的父實體被初始化爲「null」。我沒有完全理解如何使用父實體與父實體引用字段,或者需要什麼才能將更改保存到實體。
- 我失去了我的分析中任何重要的因素(即EntityState?)
- 以下哪些情況是可能的,而且
- 什麼,是對付它們的最好方法:
實體:空
的EntityReference:不爲空
實體:不爲空
EntityReferen CE:空
實體:不爲空
的EntityReference:不爲空
感謝您的任何幫助。
代碼示例:
internal void AddUpdateObject(MyDataContext context)
{
// HOW DO I HANDLE THIS SECTION vvvv
if (this.MyParentEntity == null)
{
throw new Exception("Parent Property Null.");
}
if (this.MyParentEntity.EntityState == EntityState.Detached)
{
MyParentEntity t = this.MyParentEntity;
this.MyParentEntity = null;
context.AttachTo("ParentCollection", t);
this.MyParentEntity = t;
}
// ^^^^^^^^^
try
{
context.AddToMyEntities(this);
}
catch (InvalidOperationException)
{
// the object with the key already exists
MyEntity ent = context.MyEntities.First(x => x.id == this.id);
PropertyInfo[] props = typeof(MyEntity).GetProperties();
foreach (PropertyInfo pi in props)
{
if (pi.CanRead && pi.CanWrite &&
!pi.PropertyType.Name.StartsWith("EntityCollection") &&
!pi.Name.Equals("id"))
pi.SetValue(ent, pi.GetValue(this, null), null);
}
}
}
你能澄清你想要做什麼?一個代碼示例會有所幫助。另外:EF 1或EF 4? – 2010-02-16 15:56:36
按要求添加代碼。該函數基本上試圖添加或更新實體。 EF1目前。謝謝。 – Sako73 2010-02-16 16:06:28