sunandandutt Ответов: 3

Как получить значения из хранимой процедуры в linq


Привет Команда,
Здесь я получил проблему при извлечении данных из динамической созданной процедуры в linq.
он возвращает 0

Процедура создается с помощью сводных данных из существующей таблицы.

Вот хранимая процедура.

ALTER proc [dbo].[usp_tblProperty]
AS
DECLARE @PivotColumnHeaders VARCHAR(MAX)
SELECT @PivotColumnHeaders =
  COALESCE(
    @PivotColumnHeaders + ',[' + cast(propertyName as varchar(55)) + ']',
    '[' + cast(propertyName as varchar(55))+ ']'
  )
FROM tblproperty
print @PivotColumnHeaders
DECLARE @PivotTableSQL NVARCHAR(MAX)
SET @PivotTableSQL = N'
  SELECT *
  FROM (
    SELECT
     EntityObjectId,tblorganisationentity.OrganisationName,tblproperty.propertyname as propertyname,value
    FROM tblpropertyvalue inner join tblProperty
    on tblpropertyvalue.propertyid = tblproperty.propertyid
    inner join tblorganisationentity 
    on tblorganisationentity.organisationId = tblpropertyvalue.entityobjectid
   
  ) AS PivotData
  PIVOT (
    max(value)
    FOR propertyname IN (
      ' + @PivotColumnHeaders + '
    )
  ) AS PivotTable
'
Print @PivotTableSQL
EXECUTE(@PivotTableSQL)


Вывод процедуры-это что-то вроде приведенных ниже данных упоминания:

Organizationid Organizationname SAdd1 lSubscriberId

F649AD83-CA02-43AC-9A5E-FD6B183415F1 3M Norge A. S 0 3M




На странице C#, когда я пытаюсь получить доступ к данным с помощью linq, он возвращает целочисленное значение, и я не могу получить доступ к proerties из процедуры.

Вот код на языке Си# :
var elno = objEfoDataContext.usp_tblProperty();
elno return 0

3 Ответов

Рейтинг:
26

sunandandutt

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

Объявить @PivotColumnHeaders VARCHAR(MAX)
Выберите @PivotColumnHeaders =
ОБЪЕДИНЯТЬСЯ(
@PivotColumnHeaders + ',[' + cast(propertyName as varchar(55)) + ']',
'[' + cast(propertyName as varchar(55))+ ']'
)
От tblproperty
печать @PivotColumnHeaders
Объявить @PivotTableSQL NVARCHAR(макс.)
SET @PivotTableSQL = N'
создать представление abc
как

ВЫБИРАТЬ *
ОТ (
ВЫБИРАТЬ
EntityObjectId,tblorganisationentity.Organizationname,tblproperty.propertyname как propertyname,value
Из tblpropertyvalue внутреннее соединение tblProperty
на tblpropertyvalue.Ин недвижимости = tblproperty.Ин недвижимости
внутреннее соединение tblorganisationentity
на tblorganisationentity.organisationId = tblpropertyvalue.entityobjectid

) Как сводные данные
СТЕРЖЕНЬ (
максимальное значение)
Для propertyname IN (
'+ @PivotColumnHeaders + '
)
) Как сводная таблица
'

Теперь вы можете получить доступ к просмотру как
"выберите * из abc"


Рейтинг:
1

milenalukic

Привет,

Чтобы прочитать результаты хранимой процедуры в Linq вам нужно создать список для заполнения proc:

using(objEfoDataContext dc = new objEfoDataContext())
{

List<usp_tblproperty> myresult = new List<usp_tblproperty>();
myresult= dc.usp_tblPropertyResult().tolist();
//myresult will have the data from your stored procedure
}</usp_tblproperty></usp_tblproperty>


Рейтинг:
1

AYDIN_CANDAN

привет, вот и решилась твоя проблема..


DataClasses2DataContext db = new DataClasses2DataContext();

        IEnumerable<sp_SonYapilanlarResult> sp_gelen = (IEnumerable<sp_SonYapilanlarResult>)db.sp_SonYapilanlar();

        List<sp_SonYapilanlarResult> listemeARTI = new List<sp_SonYapilanlarResult>();
        List<sp_SonYapilanlarResult> listemeSIFIR = new List<sp_SonYapilanlarResult>();
        List<sp_SonYapilanlarResult> listemeEKSI = new List<sp_SonYapilanlarResult>();
        foreach (sp_SonYapilanlarResult gelenItem in sp_gelen)
        {
            if (gelenItem.Delta > 0)                listemeARTI.Add(gelenItem);
            if (gelenItem.Delta == 0)                listemeSIFIR.Add(gelenItem);
            if (gelenItem.Delta < 0)                listemeEKSI.Add(gelenItem);
        }

        GridView1.DataSource = listemeARTI;
        GridView1.DataBind();

        GridView2.DataSource = listemeSIFIR;
        GridView2.DataBind();

        GridView3.DataSource = listemeEKSI;
        GridView3.DataBind();


Maciej Los

6 лет слишком поздно ;(