gpt4 book ai didi

c# - 在 Entity Framework ADO.NET 实体数据模型中导入 SQL Server 函数时出错

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

我的项目基于 ADO.NET 实体数据模型,我使用 Entity Framework 6.0。

好吧,我在项目中导入函数时收到此错误:

Error 6046: Unable to generate function import return type of the store function 'fn_PWDCOMPARE'. The store function will be ignored and the function import will not be generated.

如果我导入过程,我不会收到错误。

函数是:

CREATE FUNCTION fn_PWDCOMPARE (@pwd NVARCHAR(MAX),@pwdhash NVARCHAR(MAX))
RETURNS BIT
BEGIN
RETURN PWDCOMPARE(@pwd, @pwdhash)
END

最佳答案

EF 6.1.3 仍然不会为标量函数生成代码。也就是说,您可以扩展 DbContext 类并将您自己的实现添加到您的函数中。之后,您可以像调用 EF 模型中的任何其他对象一样调用您的函数。

在与数据库模型相同的 [命名空间] 上创建一个包含 [部分类] 的文件,并使用相同的模型上下文名称。并添加这段代码:

public partial class YourDBContext : DbContext
{
public System.Data.Entity.Core.Objects.ObjectContext AsObjectContext()
{
return (this as System.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext;
}

[DbFunction("YourDBModel.Store", "fn_PWDCOMPARE")]
public bool fn_PWDCOMPARE(string pwd, string pwdhash)
{
var paramList = new ObjectParameter[]
{
new ObjectParameter("pwd", pwd),
new ObjectParameter("pwdhash", pwdhash)
};

return this.AsObjectContext().CreateQuery<bool>("YourDBModel.Store.fn_PWDCOMPARE", paramList).Execute(MergeOption.NoTracking).FirstOrDefault();
}

然后您只需从您的代码中调用这个新函数:

bool retVal = YourDBContext.fn_PWDCOMPARE(pass, hash);

关于c# - 在 Entity Framework ADO.NET 实体数据模型中导入 SQL Server 函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22563562/

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