Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C检索存储过程结果_C#_Entity Framework_Stored Procedures - Fatal编程技术网

C# C检索存储过程结果

C# C检索存储过程结果,c#,entity-framework,stored-procedures,C#,Entity Framework,Stored Procedures,修改程序: alter procedure searchProgramUnitResult( @id char(10) ) as begin select id from table1 where id = @id end 将过程导入MVC项目后,DBML设计器中的Sam过程: [global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.searchProgramUnit")] public ISingleResu

修改程序:

alter procedure searchProgramUnitResult(
    @id char(10)
)
as
begin
    select id from table1 where id = @id
end
将过程导入MVC项目后,DBML设计器中的Sam过程:

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.searchProgramUnit")]
public ISingleResult<searchProgramUnitResult> searchProgramUnit([global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(10)")] ref string id){
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())),id);
id = ((string)(result.GetParameterValue(0)));
return ((ISingleResult<searchProgramUnitResult>)(result.ReturnValue));
}

您是在询问数据类型吗

public List<string> search (string id){
    DataContextClass db = new DataContextClass();         
    List<string> results = db.searchProgramUnit(id).ToList();
    return results;
}

您是在询问数据类型吗

public List<string> search (string id){
    DataContextClass db = new DataContextClass();         
    List<string> results = db.searchProgramUnit(id).ToList();
    return results;
}

如果已在DbContext中映射存储过程,则可以这样调用它:

using (var context = new DataContextClass())
{
    var courses = context.searchProgramUnit("1");

    foreach (table1 cs in table1s)
        Console.WriteLine(cs.Name);
}
另一种同样适用于代码优先的方法:

using (var ctx = new DataContextClass())
{
    var idParam = new SqlParameter
    {
        ParameterName = "id",
        Value = "1"
    };
    var table1List = ctx.Database.SqlQuery<table1>("exec searchProgramUnitResult @id ", idParam).ToList<table1>();

    foreach (table cs in table1List)
        Console.WriteLine("Name: {0}", cs.Name);
}

表1是您的实体/类名

如果已在DbContext中映射存储过程,则可以这样调用它:

using (var context = new DataContextClass())
{
    var courses = context.searchProgramUnit("1");

    foreach (table1 cs in table1s)
        Console.WriteLine(cs.Name);
}
另一种同样适用于代码优先的方法:

using (var ctx = new DataContextClass())
{
    var idParam = new SqlParameter
    {
        ParameterName = "id",
        Value = "1"
    };
    var table1List = ctx.Database.SqlQuery<table1>("exec searchProgramUnitResult @id ", idParam).ToList<table1>();

    foreach (table cs in table1List)
        Console.WriteLine("Name: {0}", cs.Name);
}

表1是您的实体/类名

您的存储过程定义看起来很奇怪-您指定@id是一个输出,但您将其作为输入使用,并且从未将其设置为任何值。请尝试我的答案并给我反馈,此链接将帮助u 2您的存储过程定义看起来很奇怪-您指定@id是一个输出,但您将其用作输入,并且从不将其设置为任何值。请尝试我的答案并给我反馈,此链接将帮助u 2不是表中的所有列都是字符串您正在传递字符串id并返回它。如果要列出select语句中的所有列,EntityFramework将创建一个结果对象。db.searchProgramUnitid.ToList将返回所述对象的集合及其属性。请发布您实际使用的存储过程,因为从表1中选择id,其中id=@id对于理解真正的问题并不十分有用。表中并非所有的冒号都是string。您正在传递字符串id并返回它。如果要列出select语句中的所有列,EntityFramework将创建一个结果对象。db.searchProgramUnitid.ToList将返回所述对象的集合及其属性。请发布您实际使用的存储过程,因为从表1中选择id,其中id=@id对于理解真正的问题并不是很有用;这将为您返回一个实体类型列表,我认为在sql server 2005之后您不需要使用exec!我使用的是SQLServer2008R2的ManagementStudio,内置执行选项在它的.Database.SqlQuerystoredProcedureName中有exec,params;这将为您返回一个实体类型列表,我认为在sql server 2005之后您不需要使用exec!我使用的是SQLServer2008R2的ManagementStudio,内置执行选项中有exec