Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 c# AutoMapper dto совместить с entity  [new]
Nechto
Member

Откуда:
Сообщений: 825
Здравствуйте!

Имеется сущность
public class Entity
{
     public int GlobalId { get; set; }
     public string Name{ get; set; }
}
public class EntityDto
{
     public Entity Entity { get; set; }
     public int GlobalId { get; set; }
     public string Book { get; set; }
}


Как реализовать тоже самое только средствами AutoMapper? Подскажите пожалуйста.
foreach(var dto in dtos)
{
     var firstEntity = Context.Set<Entity>().FirstOfDefault(w => w.GlobalId == dto.GlobalId );
     var entityDto = new EntityDto
     {
           Entity = firstEntity, // свойство может быть нулевым, если нет соответствующей записи в entities
           GlobalId = dto.GlobalId, 
           Book = dto.Book 
     }
}
17 окт 17, 08:54    [20874634]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
hVostt
Member

Откуда:
Сообщений: 18578
Nechto,

Внутри EntityDto не может быть ссылок на Entity, только вложенные Dto.
17 окт 17, 10:06    [20874850]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
Nechto
Member

Откуда:
Сообщений: 825
hVostt
Nechto,

Внутри EntityDto не может быть ссылок на Entity, только вложенные Dto.


При таком раскладе, количество выводимых записей dto будет зависеть от количества записей в entity. А мне нужно наоборот, чтобы dto выдавало полный список записей, а к ним вязались существующие записи entity.
19 окт 17, 14:36    [20882613]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28171
Nechto
hVostt
Nechto,

Внутри EntityDto не может быть ссылок на Entity, только вложенные Dto.


При таком раскладе, количество выводимых записей dto будет зависеть от количества записей в entity. А мне нужно наоборот, чтобы dto выдавало полный список записей, а к ним вязались существующие записи entity.

LEFT JOIN что-ли?
19 окт 17, 14:40    [20882631]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
Nechto
Member

Откуда:
Сообщений: 825
skyANA,

В принципе, да. Только базы данных разные, и при этом мне нужно не потерять учет изменения сущности entity через ChangeTracker
19 окт 17, 14:44    [20882650]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Nechto
hVostt
Nechto,

Внутри EntityDto не может быть ссылок на Entity, только вложенные Dto.


При таком раскладе, количество выводимых записей dto будет зависеть от количества записей в entity. А мне нужно наоборот, чтобы dto выдавало полный список записей, а к ним вязались существующие записи entity.

А почему в Entity не все записи?
Ведь он прав.
19 окт 17, 15:49    [20882987]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
hVostt
Member

Откуда:
Сообщений: 18578
Nechto
При таком раскладе, количество выводимых записей dto будет зависеть от количества записей в entity. А мне нужно наоборот, чтобы dto выдавало полный список записей, а к ним вязались существующие записи entity.


Внутри DTO может быть другое DTO. Мысль понятна? :)
19 окт 17, 18:00    [20883584]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
hVostt
Member

Откуда:
Сообщений: 18578
Nechto
В принципе, да. Только базы данных разные, и при этом мне нужно не потерять учет изменения сущности entity через ChangeTracker


Полную задачу давайте.
19 окт 17, 18:01    [20883588]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
Nechto
Member

Откуда:
Сообщений: 825
hVostt,

Постараюсь объяснить по простому.
Имеется таблица с общим набором данных, структура таблицы неизмена. Мне нужно в своем приложении реализовать возможность расширить набор данных для этой таблицы, с возможностью редактирования расширеного набора данных.
Для этого я создаю dto для общей таблицы и создаю свою таблицу entity, и связываю их по ключу.
Теперь когда пользователь открывает приложение, видет полный список dto. Переходя в режим редактирования пользователь видет основную информацию и может редактивать дополнительную. Запись в таблице entity создается по мере редактирования, поэтому число записей не равно числу записей dto.
23 окт 17, 09:05    [20890949]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
hVostt
Member

Откуда:
Сообщений: 18578
Nechto,

Не думал на тему TPT?

В любом случае, если ты работаешь с DTO, то внутри DTO не должно быть Entity. И при любом раскладе, передавать Entity в виде вью модели или внутри вью модели -- крайне хреновое решение. Собирай только DTO, работай с ним, когда надо сохранить, доставай Entity и переноси изменений, создавай Entity и т.д. Исходи из данного подхода и жизнь твоя упростится на пару порядков.
23 окт 17, 09:25    [20891037]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
hVostt
Member

Откуда:
Сообщений: 18578
Nechto,

Ну и EF не даст в подзапросах вытаскивать Entity. Если уж на то пошло, просто не даст и всё.
23 окт 17, 09:25    [20891038]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
Nechto
Member

Откуда:
Сообщений: 825
hVostt
Nechto,

Не думал на тему TPT?

В любом случае, если ты работаешь с DTO, то внутри DTO не должно быть Entity. И при любом раскладе, передавать Entity в виде вью модели или внутри вью модели -- крайне хреновое решение. Собирай только DTO, работай с ним, когда надо сохранить, доставай Entity и переноси изменений, создавай Entity и т.д. Исходи из данного подхода и жизнь твоя упростится на пару порядков.

TPT не подойдет, так как этот подход статический. Данные в Dto могут изменяться.

Я только вот понять не могу почему entity нельзя помещать в dto.
В данный момент я сделал так. Есть сборка domain в ней у меня EF. Есть сборка domainDto, в ней класс dto в который входи entity, запрос и прочие классы.
public class EntityDto
{
     public Entity Entity { get; set; }
     public int GlobalId { get; set; }
     public string Book { get; set; }
}

Структура приложения Mvvm, из модели я отправляю набор данных entity в сборку domainDto, там это дело соединяю и возвращаю в модель. В результате я могу редактировать и сохранять в модели этот набор данных напрямую в БД.
Выходит так, что сборка domainDto мне нужна только как помощник чтобы собрать все во едино.
23 окт 17, 09:59    [20891130]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Nechto
Имеется таблица с общим набором данных, структура таблицы неизмена. Мне нужно в своем приложении реализовать возможность расширить набор данных для этой таблицы, с возможностью редактирования расширеного набора данных.

Переведи.
У вас Модель не верна.
Вы в термих бд должны сделать. И в терминах ОРМ.
Т.е. маппинг объекта-класса на ОДНУ таблицу.
Термин DTO чисто для передачи объектов по сети и веб. Без сосояния...голые данные.
23 окт 17, 10:32    [20891221]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Nechto
Есть сборка domainDto, в

Зачем её выделять в сборку?
23 окт 17, 10:35    [20891238]     Ответить | Цитировать Сообщить модератору
 Re: c# AutoMapper dto совместить с entity  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Nechto
Имеется таблица с общим набором данных, структура таблицы неизмена.

Дай пример.
У тебя сущность Клиент и Продавец в одной табле? И нельзя изменить?
23 окт 17, 10:39    [20891256]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить