2015-06-29 17 views
-1

Я хотел бы получить список значений из хранимой процедуры. Как это сделать ?Как получить список значений из хранимой процедуры с помощью Linq?

create PROCEDURE Get_ListOf_Holiday 
AS 
BEGIN 
    select * from holiday 
END 

В моем Linq:

using (PlanGenEntities3 entity2 = new PlanGenEntities3()) 
{ 
    var testList = entity2.Get_ListOf_Holiday(); 
} 

Но я всегда получаю значение как -1. Но на моем SQL-сервере я получаю вывод как список праздничных деталей.

Как это решить?

+0

вы сопоставляются вашу процедуру правильно ... также вместо * заменить его на имя столбцов ... Используете ли вы структуру сущностей? –

+0

Определяется ли сущность2? Является ли это объектом вашей базы данных, где лежит процедура? – Ionic

+0

Да, я использую Entity Framework для вызова хранимой процедуры и получения значений с помощью linq – Dhamo

ответ

0

Первого Перетаскивание тогда ваш праздничный стол перетаскивать процедуру

При перетаскивании процедуры в LinQ к SQL, то по умолчанию типа возврата всегда автогенерируемый типа.

Для правильного типа возврата u необходимо выполнить процедуру rightclick. Имя и свойства щелчка изменить тип возвращаемого значения, равный имени класса таблицы праздников.

Это много деталей могут помочь вам

0

Прежде всего, пожалуйста, помогите мне понять этот вопрос. -> Имя PlanGenEntities3? Если да, то, пожалуйста, измените его, потому что он не передает его значение, он должен быть сингулярным, он не должен содержать число [в этом случае 3] -> где у вас используется linq? -> почему вы хотите получить доступ к хранимой процедуре, а не таблице? .. Вы можете получить все значения от «holiday».

Вы можете использовать что-то вроде: var x = context.holiday.ToList (); `

Возможное решение: -

если вы используете рамки Entity, вам нужно использовать класс, унаследованный от System.Data.Entity.DbContext и использовать переменный контекст.

Теперь используя эту переменную контекста для доступа к таблицам данных.

PS: Я тоже новичок в программировании, надеюсь, я могу помочь, если вы разделяете больше деталей

+0

PlanGenEntities3 - это имя платформы Entity. – Dhamo

+0

ok, почему вы хотите получить доступ к хранимой процедуре? u может выбрать все значения из самой таблицы .. и использует контекстную переменную? – Bounty

0

Используйте Dataset в качестве возвращаемого типа

string dbConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DbName"].ConnectionString; 
     SqlConnection sqlConnection = new SqlConnection(dbConnectionString); 
     SqlCommand command = new SqlCommand("Proc Name", sqlConnection); 
     command.CommandType = CommandType.StoredProcedure; 

     command.Parameters.Add("@Id", SqlDbType.Int).Value = Id 
     command.Parameters.Add("@Name", SqlDbType.VarChar).Value = nameValue; 

     sqlConnection.Open(); 
     command.CommandTimeout = 30; 
     SqlDataAdapter da = new SqlDataAdapter(command); 
     DataSet result = new DataSet(); 
     da.Fill(result); 
     sqlConnection.Close(); 
     return result; 
0
using(PlanGenEntities3 db = new PlanGenEntities3()){ 
    IList<Entity> list = new List<Entity>(); 
    var query = db.Get_ListOf_Holiday(); 
    foreach (var m in query) 
    { 
     list.Add(new Entity() 
     { 
     Id = m.Id, 
     Name = m.Name    
     }); 
     } 
     return list; 
}