Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование моего объекта к Entity / 25 сообщений из 25, страница 1 из 1
27.11.2018, 21:20
    #39739406
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
Есть объект Entity и такой же объект есть у меня.
Но мой не приводится к Entity.
Такое приведение возможно?
Код: c#
1.
2.
3.
4.
5.
public IEnumerable<Packet> GetPackets()
        {          
            //return ent.Packets;
            return (Packet)SqlDataProvider.GetPackets();
        }



Приходится использовать свой способ получения данных из таблицы с преобразованием поля Null, а в Entity это поле является ключом и поэтому вызывается ошибка
...
Рейтинг: 0 / 0
27.11.2018, 21:26
    #39739409
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
либо Packet рекурсивно реализует IEnumerable<Packet>, либо пропущен yield, либо тут кто-то гонит
...
Рейтинг: 0 / 0
27.11.2018, 21:27
    #39739410
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
или может имелось ввиду
Код: c#
1.
return SqlDataProvider.GetPackets().Cast<Packet>();

?
...
Рейтинг: 0 / 0
27.11.2018, 21:44
    #39739413
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
Shocker.Proили может имелось ввиду
Код: c#
1.
return SqlDataProvider.GetPackets().Cast<Packet>();

?
Спасибо. Ошибка исчезла.

Но теперь следующий блок кода даёт ошибку, что "Не удается перечислить результаты запроса более одного раза"
Код: c#
1.
 PacketsList = DataManager.GetPackets().ToList();
...
Рейтинг: 0 / 0
27.11.2018, 22:17
    #39739425
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
NewIvanovecЕсть объект Entity и такой же объект есть у меня.


Если "такой же" это просто "с такими же свойствами", то нет. Надо или дописать .Select(x => new { .... }) или использовать, например, automapper .
...
Рейтинг: 0 / 0
27.11.2018, 23:14
    #39739456
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
fkthat,

что мешает использовать исходный тип, если они одинаковые? я что то не понял... :D
...
Рейтинг: 0 / 0
27.11.2018, 23:32
    #39739464
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
NewIvanovecСпасибо. Ошибка исчезла.

Но теперь следующий блок кода даёт ошибку, что "Не удается перечислить результаты запроса более одного раза"

Написано же. Нельзя перечислять более одного раза.
Значит, когда вы в дебаге смотрите, вы тупо ломаете работу кода.
...
Рейтинг: 0 / 0
28.11.2018, 06:38
    #39739491
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
Roman Mejtesfkthat,

что мешает использовать исходный тип, если они одинаковые? я что то не понял... :D

Типичный пример - многослойка, где, к примеру два одинаковых по структуре объекта - один - сущность БД, а другой - DTO.
...
Рейтинг: 0 / 0
28.11.2018, 07:19
    #39739496
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
fkthatRoman Mejtesfkthat,

что мешает использовать исходный тип, если они одинаковые? я что то не понял... :D

Типичный пример - многослойка, где, к примеру два одинаковых по структуре объекта - один - сущность БД, а другой - DTO.DTO и многослойку делают как раз при разных.
А при одинаковых сущность = dto = web api = rest
?
...
Рейтинг: 0 / 0
28.11.2018, 08:50
    #39739512
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
Petro123DTO и многослойку делают как раз при разных.

Я имел в виду:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class FooEntity {
   public int Id {get;set;}
   public string Name {get;set;}
}

public class FooDto {
   public int Id {get;set;}
   public string Name {get;set;}
}




Объекты вроде как "одинаковые", но привести один к другому просто через type casting невозможно.
...
Рейтинг: 0 / 0
28.11.2018, 08:59
    #39739514
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
fkthat,
Ок.
Тогда вариант не делать 2 класса должен работать....
...
Рейтинг: 0 / 0
28.11.2018, 09:12
    #39739520
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
hVosttNewIvanovecСпасибо. Ошибка исчезла.

Но теперь следующий блок кода даёт ошибку, что "Не удается перечислить результаты запроса более одного раза"

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

понял. спасибо.
но ещё одна появилась :)
" Недопустимая попытка вызвать Read при закрытом устройстве чтения. "
...
Рейтинг: 0 / 0
28.11.2018, 09:17
    #39739521
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
...
Рейтинг: 0 / 0
28.11.2018, 09:38
    #39739529
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
Petro123Тогда вариант не делать 2 класса должен работать....

Может быть куча причин делать два класса, даже если они "одинаковые". Например, навскидку:


1) Изоляция слоев - не хотим, чтобы, к примеру, слой UI напрямую работал с объектами entity, которые описаны в слое data access.


2) К объектам могут быть прицеплены разные аттрибуты - например, объекты entity могут иметь аттрибуты связанные с ORM, а объекты DTO могут иметь аттрибуты связанные с сериализацией в тот же json или там xml, и мы не хотим мешать все это в одну кучу.


3) Мы хотим заложиться на то, что может быть объекты со временем станут не совсем одинаковые - в случае разных классов изменения будут при этом проще.
...
Рейтинг: 0 / 0
28.11.2018, 09:52
    #39739536
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
NewIvanovec,

Я тут подозреваю, что сама реализация DataManager.GetPackets кривая - это типичные грабли - IEnumerable внутри него возвращается изнутри конструкции типа "using() {}" - в итоге перечисление этого IEnumerable начинается уже после того, как его источник данных закрыт.
...
Рейтинг: 0 / 0
28.11.2018, 09:52
    #39739537
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
fkthat,
Ну. На самом деле не куча, а практически 1 - делим на слои.
Тогда п. 3 просто следствие п. 1 и одинаковы временно.
А п. 2 сомнителен, т. к. атрибуты вроде прекрасно уживаются вместе. А в core вообще сериализация автоматически без всяких команд и атрибутов.
Спасибо.
...
Рейтинг: 0 / 0
28.11.2018, 09:55
    #39739538
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
fkthatNewIvanovec,

Я тут подозреваю, что сама реализация DataManager.GetPackets кривая - это типичные грабли - IEnumerable внутри него возвращается изнутри конструкции типа "using() {}" - в итоге перечисление этого IEnumerable начинается уже после того, как его источник данных закрыт.+1
Что за менеджер?
...
Рейтинг: 0 / 0
28.11.2018, 10:07
    #39739543
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public IEnumerable<UserPacket>  GetPackets()
        {
            
            using (DBDataContext db = new DBDataContext(ConnectionString))
            {
                string query = string.Format(@"SELECT *
	                                           FROM   [dbo].[Packet]
	                                                 ");

                var Val = db.ExecuteQuery<UserPacket>(query);//.ToList();
                return Val;
            }
        }
...
Рейтинг: 0 / 0
28.11.2018, 10:15
    #39739546
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
NewIvanovec
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public IEnumerable<UserPacket>  GetPackets()
        {
            
            using (DBDataContext db = new DBDataContext(ConnectionString))
            {
                string query = string.Format(@"SELECT *
	                                           FROM   [dbo].[Packet]
	                                                 ");

                var Val = db.ExecuteQuery<UserPacket>(query);//.ToList();
                return Val;
            }
        }

разремуй toList
...
Рейтинг: 0 / 0
28.11.2018, 10:17
    #39739550
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
NewIvanovec,
И возьми ОРМ. Что за извращения.
Либо dataTable, dataSet.
...
Рейтинг: 0 / 0
28.11.2018, 10:20
    #39739552
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
Petro123атрибуты вроде прекрасно уживаются вместе

Уживаются-то они вместе нормально, но впендюрить, например, в объект DAL кучу аттрибутов, которые не имеют к DAL никакого отношения - решение, имхо, не очень красивое. К тому же это, может повлечь надобность цеплять в DAL зависимость от каких-то сборок, которые опять-таки имеют отношение только к тому же UI.

Petro123А в core вообще сериализация автоматически без всяких команд и атрибутов.

Да она и до core была автоматической (в json или xml, допустим). Только что, если хотим, допустим, переименовать свойство при сериализации, или серилизовать только часть свойств или т.п.

Не, ну в многослойке, условно говоря 1 -> 2 -> 3, всегда есть соблазн не дублировать объекты слоя 3 на слое 2, но все равно в конце-концов приходим к ситуации, когда объектов слоя 3 становится недостаточно, и приходится вводить какие-то дополнительные объекты в слое 2. В итоге рождается бардак, когда в одних местах слой 1, начинает напрямую использовать исходные объекты слоя 3, а в других объекты слоя 2. По мне, так лучше с самого начала пойти на некоторый оверхед и дополнительную работу и слои строго отделить друг от друга.
...
Рейтинг: 0 / 0
28.11.2018, 10:27
    #39739558
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
Petro123,

Судя по всему у него и есть ORM, только для чего-то SQL запрос напрямую выполняется текстом, вместо LINQ.


Наличие string.Format наводит на мысль, что там пока что еще нет, но в будущем ожидается какой-нибудь sql-injection :-)


И да, ToList или ToArray там, разумеется, необходим.
...
Рейтинг: 0 / 0
28.11.2018, 10:33
    #39739563
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
fkthatСудя по всему у него и есть ORM, только для чего-то SQL запрос напрямую выполняется текстом, вместо LINQ.ну, я как увидел select звезда from табле, так сразу и стоп кран сорвало)))
...
Рейтинг: 0 / 0
28.11.2018, 10:39
    #39739565
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
fkthatУживаются-то они вместе нормально, но впендюрить, например, в объект DAL кучу аттрибутов, которые не имеют к DAL никакого отношения - решение, имхо, не очень красивое. К тому же это, может повлечь надобность цеплять в DAL зависимость от каких-то сборок, которые опять-таки имеют отношение только к тому же UI.в Core DAL уже чисто условное. Это по факту POCO или обычные классы.
Все упрощают и молодцы.
Я просто за линейкой решений от простого к сложному.
Если он пишет select звезда, то рано ему делить на сборки, слои, dll'ки.
Потом поделит.
IMHO
...
Рейтинг: 0 / 0
28.11.2018, 10:42
    #39739567
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование моего объекта к Entity
fkthatВ итоге рождается бардак,в Core автоматом инжектится контекст EF в контроллер. Конечно соблазн для студента и замаешься доказывать что так нельзя.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование моего объекта к Entity / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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