如何在不修改自动生成context.cs文件的情况下正确调用Entity Framework中的存储过程?

时间:2016-09-06 06:44:35

标签: c# .net entity-framework-6

在我的项目中,我使用Entity Framework作为我的数据访问层。我创建了一个存储过程InitPartitionStorePos并导入它。当我像这样调用相应的函数时:

public virtual ObjectResult<Nullable<int>> InitPartitionStorePos(Nullable<int> maxPos, string machineCode)
{
   var maxPosParameter = maxPos.HasValue ?
        new ObjectParameter("maxPos", maxPos) :
        new ObjectParameter("maxPos", typeof(int));

    var machineCodeParameter = machineCode != null ?
        new ObjectParameter("machineCode", machineCode) :
        new ObjectParameter("machineCode", typeof(string));

    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<int>>("InitPartitionStorePos", maxPosParameter, machineCodeParameter);
}

它抛出异常:

  

FunctionImport&#39; InitPartitionStorePos&#39;无法在容器&#39; PartitionEntities&#39;

中找到

使用以下代码不打印

ObjectContext ctx = ((IObjectContextAdapter)this).ObjectContext;

MetadataWorkspace space = ctx.MetadataWorkspace;
EntityContainer ct;

space.TryGetEntityContainer(ctx.DefaultContainerName, DataSpace.CSpace, out ct);    

foreach(EdmFunction candidate in ct.FunctionImports)
{
    System.Diagnostics.Debug.WriteLine(candidate.Name);
}

edmx文件:

enter image description here

我想知道为什么EF6找不到导入功能?

我正在使用Visual Studio Community 2015.实体框架版本是6.1.3。

0 个答案:

没有答案