2014-09-18 3 views
0

Я узнаю о POCOs, и, хотя мне нравятся многие концепции, я думаю, что я не совсем понял.Проблема с кэшированием столбцов paa

У меня есть проблема, как следующее:

У меня есть один sproc, который возвращает несколько столбцов и значений от этих столбцов, которые динамически строить внутри sproc на основе определенных условий.

например, на основе ввода, один из ниже результата должен вернуться,

1)

Id -- Name -- Age 
    1  Peter 25 
    2  Janit 53 

2)

Id -- Provider Name -- Provider Type 
5  C. A    hospital   

Я не могу создать класс для этих динамических столбцов, поэтому Я извлекаю записи с использованием динамического объекта и POCO DB.

List<dynamic> list = db.fetch<dynamic>(sql); 

Проблема возникает, когда кто-то другой вызов функции с различным параметром, то результат сохраняет информацию столбца для первого вызова POCO и привести к желанию одного.

Id -- Name -- Age 
    5  C. A  hospital   

Это несоответствие, вызывающее ошибку времени выполнения.

Не могли бы вы помочь мне решить эту проблему? или как определить класс для такого рода сценариев?

Надеюсь, я подробно объяснил свою проблему.

ответ

0

Вы можете определить класс POCO только для того, чтобы получить результаты. Я использую их много. PetaPoco будет заполнять только поля, возвращаемые SP.

+0

благодарит за информацию. не могли бы вы предоставить мне один пример для того же. Фактически, когда я создаю класс POCO для моего объекта, он не поддерживает другой набор результатов, поскольку SPROC возвращает динамические столбцы. иногда с разными именами и разными значениями. Вот почему я использую объект для получения данных. но проблема здесь в том, что первая выборка содержит данные столбцов в памяти. – user1182370

0

Создать ПОКО со всеми столбцами вы ожидаете быть возвращены из динамического SP таким образом, как следующее:

public class PocoName  
{ 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public int Age {get; set;} 
    public string ProviderName {get; set;} 
    public string ProviderType {get; set;} 
    ... 
} 

Затем вызовите функцию следующим образом:

List<PocoName> list = db.fetch<PocoName>(sql); 

Каждый раз, когда вы запустите sproc с различными входными параметрами, только столбцы, возвращаемые sproc, будут заполнены внутри вашего POCO.

+0

В этой структуре есть еще несколько проблем. 1) У меня 7 разных SPROC около 60 + столбцов. 2) Несколько имен столбцов, таких как «Провайдер
Тип», это существующая конфигурация для отображения столбцов в сетке только этим способом. как я это обработаю? есть ли другой динамический подход? – user1182370