如何使用Linq从存储过程中获取值列表?

时间:2015-06-29 08:52:37

标签: c# sql-server 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服务器中,我得到了类似假日详细信息列表的输出。

如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

首先拖放您的假期表,然后拖放您的程序

在LinQ-to-SQL中拖放Procedure时,默认返回类型始终为 自动生成的类型。

对于正确的返回类型,您需要右键单击过程名称并单击属性 将返回类型更改为等于Holiday Table的类名。

那么多细节可能会对你有所帮助

答案 1 :(得分:0)

首先,请帮助我理解这个问题。 - > PlanGenEntities3是一个类名吗?如果是,那么请更改它,因为它没有表达它的含义,它应该是单数,它不应该包含数字[在这种情况下为3] - >你用过linq的地方? - >你为什么要访问存储过程而不是表格?..你可以获得假期的所有价值' ..

你可以使用类似:var x = context.holiday.ToList();`

可能的解决方案: -

如果您使用的是Entity框架,则需要使用从System.Data.Entity.DbContext继承的类并使用上下文变量。

现在使用此上下文变量来访问数据表。

P.S:我也是编程新手,希望如果你分享更多细节我可以提供帮助

答案 2 :(得分:0)

使用数据集作为返回类型

  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;

答案 3 :(得分: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;
}