在POCO .Context.tt
文件的調查,我發現下面的代碼在周圍線111
if (edmFunction.ReturnParameter == null)
{
continue;
}
string returnTypeElement = code.Escape(ef.GetElementType(edmFunction.ReturnParameter.TypeUsage));
這意味着任何函數進口返回「無」將不會被寫入。
使得上述代碼置換爲
string returnTypeElement = @"";
if (edmFunction.ReturnParameter == null)
{
returnTypeElement = @"void";
} else {
returnTypeElement = code.Escape(ef.GetElementType(edmFunction.ReturnParameter.TypeUsage));
}
我已經修改我.Context.tt
文件我已經然後不得不添加周圍的函數聲明(圍繞線118)
<#
if(returnTypeElement != "void"){
#>
<#=Accessibility.ForMethod(edmFunction)#> ObjectResult<<#=returnTypeElement#>> <#=code.Escape(edmFunction)#>(<#=paramList#>)
<#
} else {
#>
<#=Accessibility.ForMethod(edmFunction)#> <#=returnTypeElement#> <#=code.Escape(edmFunction)#>(<#=paramList#>)
<#
}
#>
一些檢查和返回聲明(大約在線142)
<#
if(returnTypeElement != "void"){
#>
return base.ExecuteFunction<<#=returnTypeElement#>>("<#=edmFunction.Name#>"<#=code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()))#>);
<#
} else {
#>
base.ExecuteFunction("<#=edmFunction.Name#>"<#=code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()))#>);
<#
}
#>
現在,這可能不是最優雅的解決方案(硬編碼字符串!),但它的確意味着我可以在我的存儲過程中使用函數導入,該函數不會返回任何內容,並具有在.Context.cs
文件中創建的相應函數,因此可通過Intellisense訪問。
做得很好 - 效果很好! – BrianCooksey 2014-04-01 03:08:01