powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Entity Framework изменение событие на изменение поля EF.
9 сообщений из 9, страница 1 из 1
Entity Framework изменение событие на изменение поля EF.
    #37630677
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть Data Model EF в ней есть сущности Order(..., orderSum), OrderWork(..., workCost, workCount) и OrderMaterial(..., materialCost, materialCount).
orderSum = workCost * workCount + materialCost * materialCount.

Так вот, как сделать так, чтобы при измении(не сохранении, потому как сохранения может и не быть) сущностей, а точнее полей cost и count, пересчитать значение поля orderSum сущности Order?
Я понимаю, что можно это сделать через control, т.е. при изменении в контроле описанных полей, вызывать пересчет orderSum, но хотелось бы это сделать именно через сущности DM, так сказать перенести логику работы в модель.
...
Рейтинг: 0 / 0
Entity Framework изменение событие на изменение поля EF.
    #37630848
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fantastick,

откройте для себя инкапсуляцию:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class Order 
{
  public IEnumerable<OrderWork> Works 
  {
    get { return new List<OrderWork>(_orderWorks).AsReadOnly();
  }

  public void AddWork(OrderWork work)
  {
     _orderWorks.Add(work)
     _orderSum += work;
  }

  public void RemoveWork(OrderWork work)
  {
     _orderWorks.Remove(work)
     _orderSum -= work;
  }
}
...
Рейтинг: 0 / 0
Entity Framework изменение событие на изменение поля EF.
    #37630917
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtor,

Инкапсуляция да, но это при добавлении.
А как же при изменении? Например поменял я count в work.
...
Рейтинг: 0 / 0
Entity Framework изменение событие на изменение поля EF.
    #37630953
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fantastick,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class OrderWork 
{
  public Order Parent { get; set; }

  public int Count 
  {
    get { return _count;}
    set 
    {
      _count = value;
      Parent.UpdateCost();
    }
  }
}
...
Рейтинг: 0 / 0
Entity Framework изменение событие на изменение поля EF.
    #37631250
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtor,

Это что же получается, надстройка ORM(помоему не ошибся) над EF?
...
Рейтинг: 0 / 0
Entity Framework изменение событие на изменение поля EF.
    #37631306
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FantastickЭто что же получается, надстройка ORM(помоему не ошибся) над EF?
А когда EF перестал быть ORM'ом!?

Слой доступа к данным тут вообще не причём. Вопрос в том, чтобы вы сделали полноценную доменную модель, которая всегда находиться в согласованном состоянии.
...
Рейтинг: 0 / 0
Entity Framework изменение событие на изменение поля EF.
    #37631339
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtor,

Я и не спорю что EF это ORM, я наверно не правильно выразился, я имел ввиду что придется делать обертку(надстройку) для модели, сверх EF.
SolYUtor Вопрос в том, чтобы вы сделали полноценную доменную модель, которая всегда находиться в согласованном состоянии.
Я что-то сделал не так? Пошел не по тому пути?
...
Рейтинг: 0 / 0
Entity Framework изменение событие на изменение поля EF.
    #37631384
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FantastickЯ что-то сделал не так? Пошел не по тому пути?
Вот этот путь точно неправильный:
Fantastickпри изменении в контроле описанных полей, вызывать пересчет orderSum
А это была правильная мысль:
Fantastickхотелось бы это сделать именно через сущности DM, так сказать перенести логику работы в модель.
И это должна быть не надстройка, а сама модель. Так что придвиньте клавиатуру, и допишите в вашу модель немного логики.
...
Рейтинг: 0 / 0
Entity Framework изменение событие на изменение поля EF.
    #37631397
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtorFantastickЯ что-то сделал не так? Пошел не по тому пути?
Вот этот путь точно неправильный:
Fantastickпри изменении в контроле описанных полей, вызывать пересчет orderSum
А это была правильная мысль:
Fantastickхотелось бы это сделать именно через сущности DM, так сказать перенести логику работы в модель.
И это должна быть не надстройка, а сама модель. Так что придвиньте клавиатуру, и допишите в вашу модель немного логики.

Не понял если честно, на что намек, то?
Т.е. то ли мне надо было делать то что я хочу другим способом, то ли не стоит сомневаться, что я на правильном пути :-)

Спасибо за пояснения. Последний вариант про придвинуть и допилить модель, с помощью инкапсуляции, меня вполне устраивает.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Entity Framework изменение событие на изменение поля EF.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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