当前位置: 首页 > 编程语言 > C#

FailedtocallwithnullparameterShare

时间:2023-04-10 16:26:06 C#

Failedtocallwithnullparameter我有以下代码:ent.ContactEventValues.SingleOrDefault(x=>x.ContactEventTypeID==contactEventType.ContactEventTypeID&&x.ProgramCode==programCode&&x.BrandCode==brandCode);当我用brandCode和programCode的值调用它时,我得到了期望值。当我进行调用但显式将x.ProgramCode和x.BrandCode设置为null时,我从数据库中获取了预期的默认值:&&x.ProgramCode==null&&x.BrandCode==null);但是,当我为programCode和brandCode调用null方法时,我从数据库中返回了null!我尝试根据这个问题的答案将==更改为.Equals():Nullableoptionalparametersox.BrandCode.Equals(brandCode)replacedx.BrandCode==brandCodeandx.ProgramCode.Equals(programCode)replacedx.ProgramCode==programCode,但是还是没有用。我也试过??运营商,仍然没有工作。这个问题说没有找到解决方案,他/她必须使用存储过程:EF4查询-多参数问题我真的不想去那里。有任何想法吗?我不知道您使用的是哪个版本的EF,但空值比较在版本5之前是一个问题。如果您检查实际发出的SQL,您可能会发现查询中未使用ISNULL。在EF6中,您将能够在DbContext上设置DbContext的UseDatabaseNullSemantics配置选项:publicclassMyContext:DbContext{publicMyContext(){this.Configuration.UseDatabaseNullSemantics=true;对于EF5,您可以使用UseCSharpNullComparisonBehavior设置:publicclassMyContext:DbContext{publicMyContext(){varobjectContextAdapter=thisasIObjectContextAdapter;objectContextAdapter.ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior=true;但是,您需要为您的项目使用.NETFramework4.5。如果您不想使用4.5,那么您可以使用如何在实体框架中查询空值?.结果是??运算符解决方案确实有效,我根本没有将它应用于==语句的两侧。所以下面的代码解决了这个问题:ContactEventValue值=ent。contactEventType.ContactEventTypeID&&(x.ProgramCode??"")==(programCode??"")&&(x.BrandCode??"")==(brandCode??""));但是,这导致空字符String等同于null。不理想。以上就是C#学习教程:使用null参数调用失败分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: