Bre*_*ogt 0 .net entity entity-framework
我正在使用EF4,我使用POCO实体生成器来创建我的实体.我有一个名为UpdateApplicationState的存储过程.我只传递了2个名为ApplicationID和ApplicationStateID的参数.它什么都不返回,所以我将返回类型设置为None.我只希望它更新应用程序状态ID,没有别的.当我为此存储过程创建函数导入时,我在"函数导入"下的上下文文件中看不到它.为什么是这样?它是在另一个地方创建的吗?我怎么称呼这种方法?
编辑:
这里没有人可以帮助我吗?我想要做的就是调用这个导入函数(不在上下文中),就像我在我的存储库类中执行其他导入函数一样:
public void UpdateApplicationState(int applicationID, int applicationStateID)
{
context.UpdateApplicationState(applicationID, applicationStateID);
}
Run Code Online (Sandbox Code Playgroud)
从我的观点来看:
applicationRepository.UpdateApplicationState(id, newApplicationStateID);
Run Code Online (Sandbox Code Playgroud)
这是我的存储过程:
ALTER PROCEDURE [dbo].[UpdateApplicationState]
(
@ApplicationID INT,
@ApplicationStateID INT
)
AS
BEGIN
UPDATE
[Application]
SET
ApplicationStateID = @ApplicationStateID
WHERE
ApplicationID = @ApplicationID;
END
Run Code Online (Sandbox Code Playgroud)
谢谢
问题是EF4 POCO提供的模板不处理没有返回类型的函数导入.您可以设置标量返回类型,也可以修改YourProject.Context.tt文件来解决问题.
在文件中查找以以下内容开头的部分:
region.Begin("Function Imports");
Run Code Online (Sandbox Code Playgroud)
然后你会看到一个像这样的代码块:
if (edmFunction.ReturnParameter == null)
{
continue;
}
string returnTypeElement = code.Escape(ef.GetElementType(edmFunction.ReturnParameter.TypeUsage));
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容替换它:
string returnTypeElement = edmFunction.ReturnParameter == null
? null : code.Escape(ef.GetElementType(edmFunction.ReturnParameter.TypeUsage));
Run Code Online (Sandbox Code Playgroud)
然后returnTypeElement在接下来的几行中寻找两种用法.第一个是方法定义:
<#=Accessibility.ForMethod(edmFunction)#> ObjectResult<<#=returnTypeElement#>>
Run Code Online (Sandbox Code Playgroud)
用...来代替:
<#=Accessibility.ForMethod(edmFunction)#> <#= returnTypeElement == null ? "int" : ("ObjectResult<" + returnTypeElement + ">") #>
Run Code Online (Sandbox Code Playgroud)
接下来是return语句中的几行:
return base.ExecuteFunction<<#=returnTypeElement#>>
Run Code Online (Sandbox Code Playgroud)
用...来代替:
return base.ExecuteFunction<#= returnTypeElement == null ? "" : ("<" + returnTypeElement + ">")#>
Run Code Online (Sandbox Code Playgroud)
现在您应该发现它正确生成函数导入的方法.也许EF4团队会接受这一点,并在下一版本中对我们进行修改.
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |