【问题标题】:Generic wrapper for stored procedure execution用于存储过程执行的通用包装器
【发布时间】:2013-08-12 14:29:37
【问题描述】:

我如何一般地执行存储过程?我试过了:

_context.Set<TEntity>();

我想避免嵌入式 SQL,例如:

context.Database.SqlQuery<TEntity>(storedProcedureName);

但是,因为存储过程是通过 Function 而不是 Type 访问的,所以这不起作用。我还尝试通过函数映射创建/访问。返回结果的复杂类型存在,但不能用于获取结果本身。

我需要代表还是在某个地方对此提供支持?

说清楚,我希望创造出类似....的东西

public IEnumerable<TEntityResult> ReadSpAll<TEntity,TEntityResult>(IEnumerable<SqlParameter> sqlParameters) 

其中TEntity 是存储过程,TEntityResult 是复杂返回类型

【问题讨论】:

    标签: c# entity-framework entity-framework-5


    【解决方案1】:

    请参阅“使用导入函数映射存储过程” @http://msdn.microsoft.com/en-us/data/gg699321.aspx

    类似代码

    var context = new AWEntities();
    ObjectResult<OrderDetail> orderDetailEnumerable = context.GetDetailsForOrder(71796);
    List<OrderDetail> details = orderDetailEnumerable.ToList();
    

    【讨论】:

    • 这不使用泛型。我需要一个通用的解决方案,这样我就可以将它用于存储库模式中的所有存储过程。
    • 对不起,伙计,我不知道这样调用 procs 的方法。我猜你想要这个签名用于基础存储库......? public T CallProcByName(string name, IEnumerable params)
    • 我认为它看起来更像:public IEnumerable&lt;TEntityResult&gt; ReadSpAll&lt;TEntity,TEntityResult&gt;(IEnumerable&lt;SqlParameter&gt; params) 其中TEntity 是存储过程,TEntityResult 是复杂的返回类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多