gpt4 book ai didi

c# - 如何使用 Linq 查询存储过程对象

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:24 25 4
gpt4 key购买 nike

假设我遇到了这种情况:我必须使用从存储过程中获取的数据来过滤我的一个实体:

var results = from c in db.Customer
join p in db.GetSPResults() on c.Id equals p.Id
select c;

在我的 Context 类中我得到了这个:

public ObjectResult<Example> GetSPResults()
{
return (this as IObjectContextAdapter).ObjectContext.ExecuteFunction<Example>("Proc_Example");
}

到目前为止我遇到了两个问题:

  1. 当代码到达 ExcecuteFunction 行时,我得到一个 InvalidOperationException:

    The FunctionImport 'xxx' could not be found in the container 'xxx'.

  2. 假设你们可以帮我解决那个问题,是否可以这样查询?使用那些像上下文实体一样的存储过程结果?我认为 EF 不允许这样做,因为它不是实体,也不是“常量值”。

我正在使用 EF 4.3。

最佳答案

您可以将其导入到您的实体模型中,而不是像那样通过名称调用您的过程,然后您可以直接在您的 DbContext 上调用类型安全/强类型的方法。

基本上您需要执行函数导入,请参见此处的示例:Using stored procedures with Entity Framework

更新:对于 POCO/代码优先,请参见此处:EF Code-First - Mapping stored procedures

关于c# - 如何使用 Linq 查询存储过程对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13593068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com