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



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

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

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

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


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

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

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

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

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

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

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

Типичный пример - многослойка, где, к примеру два одинаковых по структуре объекта - один - сущность БД, а другой - DTO.DTO и многослойку делают как раз при разных.
А при одинаковых сущность = dto = web api = rest
?
...
Рейтинг: 0 / 0
Преобразование моего объекта к Entity
    #39739512
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Преобразование моего объекта к Entity
    #39739514
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Ок.
Тогда вариант не делать 2 класса должен работать....
...
Рейтинг: 0 / 0
Преобразование моего объекта к Entity
    #39739520
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttNewIvanovecСпасибо. Ошибка исчезла.

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

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

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

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


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


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


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

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

Я тут подозреваю, что сама реализация DataManager.GetPackets кривая - это типичные грабли - IEnumerable внутри него возвращается изнутри конструкции типа "using() {}" - в итоге перечисление этого IEnumerable начинается уже после того, как его источник данных закрыт.+1
Что за менеджер?
...
Рейтинг: 0 / 0
Преобразование моего объекта к Entity
    #39739543
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;
            }
        }
...
Рейтинг: 0 / 0
Преобразование моего объекта к Entity
    #39739546
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Преобразование моего объекта к Entity
    #39739550
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewIvanovec,
И возьми ОРМ. Что за извращения.
Либо dataTable, dataSet.
...
Рейтинг: 0 / 0
Преобразование моего объекта к Entity
    #39739552
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123атрибуты вроде прекрасно уживаются вместе

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

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

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

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

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


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


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


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