gpt4 book ai didi

c# - 调用失败,参数为空

转载 作者:太空狗 更新时间:2023-10-29 21:13:24 25 4
gpt4 key购买 nike

我有以下代码:

public static ContactEventValue GetContactEventValue(ContactEventType contactEventType, string programCode, string brandCode)
{
AdvocacyEntities ent = AdvocacyEntities.GetReadOnlyInstance();
ContactEventValue value = ent.ContactEventValues.SingleOrDefault(
x => x.ContactEventTypeID == contactEventType.ContactEventTypeID
&& x.ProgramCode == programCode && x.BrandCode == brandCode);
}

当我用 brandCode 和 programCode 的值调用它时,我从数据库中得到了期望值。当我进行调用但显式将 x.ProgramCode 和 x.BrandCode 设置为 null 时,我从数据库中获取了预期的默认值:

ContactEventValue value = ent.ContactEventValues.Single(
x => x.ContactEventTypeID == contactEventType.ContactEventTypeID
&& x.ProgramCode == null && x.BrandCode == null);

但是,当我为 programCode 和 brandCode 调用带有 null 的方法时,我从数据库中返回了 null!

我尝试根据这个问题的答案将 == 更改为 .Equals():Nullable optional parameter

所以 x.BrandCode.Equals(brandCode) 替换了 x.BrandCode == brandCode,x.ProgramCode.Equals(programCode) 替换了 x.ProgramCode == programCode,但仍然没有用。

我也试过使用 ??运算符(operator),仍然没有工作。

此问题表示未找到解决方案,他/她必须使用存储过程:EF 4 Query - Issue with Multiple Parameters我真的不想去那里。

有什么想法吗?

最佳答案

我不知道您使用的是哪个版本的 EF,但空值比较在版本 5 之前是一个问题。如果您检查实际发出的 SQL,您可能会看到 IS NULL 未在查询中使用。

在 EF 6 中,您将能够设置在 DbContext 上公开的 UseDatabaseNullSemantics 配置选项:

public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}

对于 EF 5,您可以在基础 ObjectContext 上使用 UseCSharpNullComparisonBehavior 设置:

public class MyContext : DbContext
{
public MyContext()
{
var objectContextAdapter = this as IObjectContextAdapter;
objectContextAdapter.
ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior = true;
}
}

但是,您的项目需要使用 .NET Framework 4.5。如果您不想使用 4.5,则可以使用 How can i query for null values in entity framework? 中列出的解决方法之一。 .

关于c# - 调用失败,参数为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309866/

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