У меня есть отношение один к одному между объектами Employee
и EmployeePermission
со свойствами навигации PermissionTo
и Employee
соответственно.Я могу нормально загружать свойства навигации, но проблема в том, что когда я изменяю свойства связанной сущности EmployeePermission
, присоединяю сущность Employee
к контексту базы данных и вызываю метод SaveChanges()
, изменения всущность EmployeePermission
не сохраняется в базе данных, но изменения в сущности Employee
:
Вот как выглядит моя модель:
Вот как выглядит моя функция сохранения:
public static void SaveEntities(List<TEntity> entities)
{
using(var db = GetContext())
{
ObjectSet<TEntity> table = db.CreateObjectSet<TEntity>();
foreach(TEntity entity in entities)
{
if (entity.IsNew())
table.AddObject(entity);
else
{
table.Attach(entity);
EntityState state = (entity.EntityKey.IsTemporary) ? EntityState.Added : EntityState.Modified;
table.Context.ObjectStateManager.ChangeObjectState(entity, state);
}
}
db.SaveChanges();
}
}
IsNew()
- это метод расширения, который я добавил в класс EntityObject
, чтобы проверить, нужно ли добавлять или присоединять сущность к EntitySet
.
/// <summary>
/// Returns a value indicating if the entity object is new.
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public static bool IsNew(this EntityObject entity)
{
return (entity.EntityKey == null || entity.EntityKey.IsTemporary);
}
Я загружаю сотрудника и связываю его свойства с формой, меняю их и вызываю метод SaveEntities()
.Все изменения в сущности Employee
сохраняются в базе данных, но изменения в сущности EmployeePermission
не сохраняются в базе данных, и я еще не дошел до других сущностей.
IЯ не уверен, что я делаю не так и искал часами.Я ценю всю помощь, спасибо заранее.