|
Dapper
|
|||
---|---|---|---|
#18+
Всем привет! Пытаюсь подружиться с ORM Dapper, хочу сделать универсальный метод, который будет возвращать объекты нужного типа. У меня есть такие классы Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Пытаюсь потом воспользоваться методом Код: c# 1. 2. 3. 4. 5. 6.
И тут получаю ошибку: Не удалось привести тип объекта "DapperRow" к типу "Group" Вот вопрос как бы сделать такой универсальный метод, который будет возвращать мне коллекцию нужного мне типа. Хотела бы видеть что-то типа такого, код не рабочий, но мысль я думаю, понятна. Спасибо. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 11:38 |
|
Dapper
|
|||
---|---|---|---|
#18+
Kolu4ka, читайте внимательнее документацию , и не изобретайте велосипедов. В Dapper уже есть generic-метод, который делает маппинг на ваш класс: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 12:06 |
|
Dapper
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, это я понимаю. Просто получается, что для каждого моего класса Group, User и других в классе MSSQLcontroller нужно реализовывать методы для каждого класса, а я хотела чтобы метод был один, просто указывать свой класс на который бы даппер делал маппинг. Просто не знаю, может такое и нельзя сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 12:33 |
|
Dapper
|
|||
---|---|---|---|
#18+
Kolu4ka, Ясно же написали. return cn.Query <Group> ("Select GroupId, Parent, GroupName From Groups"); ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 12:43 |
|
Dapper
|
|||
---|---|---|---|
#18+
Я немного изменю свой вопрос. В строке return cn.Query<Group>("Select ...."); Вместо явного указания класса Group могу ли я использовать переменную? Может нужно использовать какую-нибудь функцию, которая по названию вернет класс т.е. string g="Group"; return cn.Query<g>("Select ...."); было одно и тоже что и return cn.Query<Group>("Select ...."); ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 13:06 |
|
Dapper
|
|||
---|---|---|---|
#18+
Kolu4kaЯ немного изменю свой вопрос. В строке return cn.Query<Group>("Select ...."); Вместо явного указания класса Group могу ли я использовать переменную? Может нужно использовать какую-нибудь функцию, которая по названию вернет класс т.е. string g="Group"; return cn.Query<g>("Select ...."); было одно и тоже что и return cn.Query<Group>("Select ...."); Generic Methods (C# Programming Guide) Не могу понять... чего вы уперлись... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 13:14 |
|
Dapper
|
|||
---|---|---|---|
#18+
Kolu4kaВместо явного указания класса Group могу ли я использовать переменную? Может нужно использовать какую-нибудь функцию, которая по названию вернет класс т.е. Не можете. Про то, что пишется там, нужно либо явно указать тип, либо дать информацию, что бы он сам смог вывести тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 13:47 |
|
Dapper
|
|||
---|---|---|---|
#18+
Можно вызывать методы через рефлексию, передавая тип, как параметр. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 14:04 |
|
Dapper
|
|||
---|---|---|---|
#18+
TamozhnyaМожно вызывать методы через рефлексию, передавая тип, как параметр. Говорят, еще есть люди, которые удаляют гланды per rectum. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 14:21 |
|
Dapper
|
|||
---|---|---|---|
#18+
Всем спасибо, все получилось. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 14:31 |
|
Dapper
|
|||
---|---|---|---|
#18+
Kolu4ka Код: c# 1.
public IEnumerable<T> Dapper_Select<T> ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 15:17 |
|
Dapper
|
|||
---|---|---|---|
#18+
buser, вот не знаю правильно ли я Вас поняла Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
тогда можно использовать без преобразования в List List<Group> gr = mssql.Dapper_Select<Group>("Select ......"); ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 15:19 |
|
Dapper
|
|||
---|---|---|---|
#18+
buserobject на IList<T> ? там тайпкастинг проходит нормально, потому что в итоге вызывается вот это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
а у ТС buffered==true. Повезло ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 15:41 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1401968]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
93ms |
get topic data: |
14ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 361ms |
total: | 571ms |
0 / 0 |