powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / В чем проблема этого подхода при определении состояния сущности?
9 сообщений из 9, страница 1 из 1
В чем проблема этого подхода при определении состояния сущности?
    #37952826
batanman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня всем.

Задача довольна тривиальная. Есть список заказов из которого можно выбрать заказ и изменить его если потребуется.
Если заказ был изменен предложить его сохранить, нет просто закрыть.
Использую модель данных без генерации посредников.

описание модели:
public class Order{

public long IDRec { get; set; }
...
public IList<Objects.SubOrder> SubOrder { get; set; }
}

описание репозитория:
public class OrderRepository{
_repository = new GenericRepository<Models.Objects.Orders>(ORM.DataContextFactory.CreateDataContext());
...
internal void SaveChanges() {
_repository.SaveChanges();

}
internal bool HaveChanges(Models.Objects.Orders order) {
_repository.DetectChanges();
return _repository.HaveChanges(order) || _repository.HaveChanges<Models.Objects.SubOrder>(order.SubOrder);}
}

описание обобщенного репозитория:
public class GenericRepository<TEntity>{
...
public void SaveChanges() {
_context.SaveChanges();

}
internal bool HaveChanges(TEntity entity) {
var stateObject = _context.ObjectStateManager.GetObjectStateEntry(entity);
if (Condition(stateObject))
return true;
return false;
}
internal bool HaveChanges<T>(IEnumerable<T> subEntities) {
foreach (var entity in subEntities) {
var stateObject = _context.ObjectStateManager.GetObjectStateEntry(entity);
if (Condition(stateObject))
return true;
}
return false;
}
private bool Condition(System.Data.Objects.ObjectStateEntry state) {
if (state.State == System.Data.EntityState.Modified ||
state.State == System.Data.EntityState.Deleted ||
state.State == System.Data.EntityState.Added)
return true;
return false;
}
internal void DetectChanges() {
_context.DetectChanges();
}
}

Метод HaveChanges() класса OrderRepository сообщают команде о том может ли она быть выполнена.
Может ли быть такая реализации и если нет то почему. ORM - EF.
Спасибо.
...
Рейтинг: 0 / 0
В чем проблема этого подхода при определении состояния сущности?
    #37952832
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
batanman,

1. многопоточность будет?
2. не совсем понял, зачем DetectChanges, ведь если у вас "приаттачен",то изменение автоматически будут при SaveChanges().
...
Рейтинг: 0 / 0
В чем проблема этого подхода при определении состояния сущности?
    #37952900
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
batanman,

кто вас так учил писать?
Код: c#
1.
2.
3.
if (<условие>)
return true;
return false;



пипец
...
Рейтинг: 0 / 0
В чем проблема этого подхода при определении состояния сущности?
    #37952993
batanman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,
многопоточность будет.
DetectChanges() нужно для того, чтобы как раз и увидеть было ли изменение сущности, без него изменения не видны (
может подскажете как увидеть изменения без вызова этого метода?
...
Рейтинг: 0 / 0
В чем проблема этого подхода при определении состояния сущности?
    #37953008
batanman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,
как надо?
...
Рейтинг: 0 / 0
В чем проблема этого подхода при определении состояния сущности?
    #37953453
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
batanmanpation,
как надо?
Имхо, return (<условие>);
...
Рейтинг: 0 / 0
В чем проблема этого подхода при определении состояния сущности?
    #37953636
batanman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergebatanmanpation,
как надо?
Имхо, return (<условие>);
))
...
Рейтинг: 0 / 0
В чем проблема этого подхода при определении состояния сущности?
    #37953637
batanman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оказывается мой вариант определения изменения состояния сущности работает, да не так как я думал )
при удалении из свойства навигации записи это не приводит к изменению состояние этого свойства...
тогда вопрос, как до сохранения сущности ( вызова метода savechanges() ) узнать об изменении (добавления удаления) ее навигационного свойства?
...
Рейтинг: 0 / 0
В чем проблема этого подхода при определении состояния сущности?
    #37954263
batanman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел только один вариант который отображает все изменения в контексте данных:
//работает только после вызова context.DetectChanges();
return _context.ObjectStateManager.GetObjectStateEntries(
System.Data.EntityState.Added |
System.Data.EntityState.Deleted |
System.Data.EntityState.Modified).Count() > 0;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / В чем проблема этого подхода при определении состояния сущности?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]