Я впервые внедряю структуру сущностей. Я работаю с добавлением / обновлением объектов, которые имеют родительское свойство.
Мне известно, что родительская сущность сущности инициализируется как "ноль". У меня нет полного понимания того, как использовать родительскую сущность в сравнении со справочными полями родительской сущности или что требуется для сохранения изменений в сущности.
- Я упускаю какие-либо важные факторы в моем анализе (т. Е. EntityState?)
- Какие из следующих ситуаций возможны, и
- Какой метод борьбы с ними является лучшим:
Сущность: ноль
EntityReference: не нуль
Сущность: не ноль
EntityReference: null
Сущность: не ноль
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);
}
}
}