Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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.