Re[3]: Разница между Rich и Anemic на примере (пример тут)
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.03.12 17:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, gandjustas, Вы писали:


G>>Нет, потому что у тебя нет логики вокруг источников данных.


А>Как нет логики? Есть:


А>1. Получить последнюю запись в базе, на основании которой делать запрос.

А>2. Выделить из сообщения данные корреспондента (там не простая логика).
А>3. Проверить, существует ли в базе этот корреспондент. Если нет, создать.

Псевдокод
var msg = ws.GetMessage(...);
var row = ctx.GetSomeObjectByCorellation(msg.Correlation);
if(row == null)
{
    row = new SomeObject();
    cxt.AddSomeObject(row);
}
CopyValues(msg, row);
ctx.SaveChanges();


По сути от полей самих объектов ничего не зависит. Это и называется ситуацией "нет логики".

А>Как все это сделать в Rich?

А>Код для вызова SOAP-метода изменить не можем -- он создан автоматически.
А>Код для работы с базой (мапинг) так же написан автоматически с помощью EF-кодогенератора.
А>Где же тогда создать объекты данных и связанные с ними методы, согласно ООП-парадигме?
Вообще-то partial классы есть. Но и они тут не нужны.

G>>А вообще тут типичная ETL задача, для которой код писать не нужно.


А>Да? Поясните старому дураку как можно сделать не написав кода (SQL -- тоже код, для нас менее приемлем, нежели C#)? Уточнение SOAP-сервис очень своеобразный, переписать его мы не можем -- не наш + есть непростая логика выделения корреспондента из сообщения.

Сложность\кривость сервиса не создает логику. стоит изучать ssis.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.