Sql server 有没有基于给定的TSQL存储过程自动生成ExecuteSqlCommand或SqlQuery调用的方法?

Sql server 有没有基于给定的TSQL存储过程自动生成ExecuteSqlCommand或SqlQuery调用的方法?,sql-server,stored-procedures,entity-framework-6,Sql Server,Stored Procedures,Entity Framework 6,我有许多存储过程需要使用System.Data.Entity.Database.ExecuteSqlCommand或System.Data.Entity.Database.SqlQuery 我的存储过程需要许多参数,包括输出参数。手动编码参数创建可能需要时间,而且可能是错误的 是否有任何方法可以基于给定的T-SQL存储过程自动生成ExecuteSqlCommand或SqlQuery调用 我知道我可以使用.edmx模型,但据我所知,.edmx模型使用函数导入。我喜欢直接调用ExecuteSqlCo

我有许多存储过程需要使用
System.Data.Entity.Database.ExecuteSqlCommand
System.Data.Entity.Database.SqlQuery

我的存储过程需要许多参数,包括输出参数。手动编码参数创建可能需要时间,而且可能是错误的

是否有任何方法可以基于给定的T-SQL存储过程自动生成
ExecuteSqlCommand
SqlQuery
调用


我知道我可以使用
.edmx
模型,但据我所知,
.edmx
模型使用函数导入。我喜欢直接调用
ExecuteSqlCommand
SqlQuery

本身并不是一个完整的解决方案,但下面是一些SQL查询,它们将返回必要的存储过程参数和结果信息。您可以将这些代码与(或类似代码)一起使用,以生成数据访问代码

存储过程参数:

select
    schema_name(sp.schema_id) as schema_name,
    sp.name as procedure_name,
    p.name as parameter_name,
    typ.name as type_name,
    p.max_length,
    p.precision,
    p.scale,
    p.is_output
from sys.procedures sp
left join sys.parameters p on p.object_id = sp.object_id
left join sys.types typ on typ.user_type_id = p.user_type_id
order by schema_name, sp.name, p.parameter_id
存储过程结果:

if serverproperty('islocaldb') is not null -- identifies sql server 2012+, which is the first version that supports dm_exec_describe_first_result_set_for_object
or serverproperty('edition') = 'SQL Azure' -- azure sql also supports dm_exec_describe_first_result_set_for_object
    select
        schema_name(sp.schema_id) as schema_name,
        sp.name as procedure_name,
        rs.name as column_name,
        typ.name as type_name,
        rs.max_length,
        rs.precision,
        rs.scale
    from sys.procedures sp
    cross apply sys.dm_exec_describe_first_result_set_for_object(sp.object_id, 0) rs
    join sys.types typ on typ.system_type_id = rs.system_type_id
    order by schema_name, sp.name, rs.column_ordinal
else
    select
        null as schema_name,
        null as procedure_name,
        null as column_name,
        null as type_name,
        null as max_length,
        null as precision,
        null as scale
答案是“不”,没有自动选项。我不得不手工编写代码。