我想从存储过程中获取值列表。怎么做?
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)
首先拖放您的假期表,然后拖放您的程序
在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;
}