c# – 其中一个主键值的类型与实体中定义的类型不匹配.请参阅内部异常了解详细信

c# – 其中一个主键值的类型与实体中定义的类型不匹配.请参阅内部异常了解详细信,第1张

概述我有以下方法: – public ActionResult CustomersDetails(string[] SelectRight){ var selectedCustomers = new SelectedCustomers { Info = SelectRight.Select(GetAccount) }; return View(sel 我有以下方法: –
public ActionResult CustomersDetails(string[] SelectRight){    var selectedCustomers = new SelectedCustomers    {        Info = SelectRight.Select(GetAccount)    };    return VIEw(selectedCustomers);}private AccountDeFinition GetAccount(string ID){    return entitIEs.AccountDeFinition.Find(ID);}

但它返回以下错误: –

The type of one of the primary key values dID not match the type defined in the entity. See inner exception for details.

在return entitIEs.AccountDeFinition.Find(ID);线

那是什么导致了这个错误?

内在的例外是: –

System.ArgumentException was unhandled by user code  HResult=-2147024809  Message=The type of one of the primary key values dID not match the type defined in the entity. See inner exception for details.Parameter name: keyvalues  Source=EntityFramework  Paramname=keyvalues  StackTrace:       at System.Data.Entity.Internal.linq.InternalSet`1.FindInStore(WrappedEntityKey key,String keyvaluesParamname)       at System.Data.Entity.Internal.linq.InternalSet`1.Find(Object[] keyvalues)       at System.Data.Entity.DbSet`1.Find(Object[] keyvalues)  InnerException: System.Data.EntitysqlException       HResult=-2146232006       Message=The argument types 'Edm.Int64' and 'Edm.String' are incompatible for this operation. Near WHERE predicate,line 1,column 90.       Source=System.Data.Entity       Column=90       ErrorContext=WHERE predicate,column 90       ErrorDescription=The argument types 'Edm.Int64' and 'Edm.String' are incompatible for this operation.       line=1
解决方法 查看异常消息参数类型’Edm.Int64’和’Edm.String’与此 *** 作不兼容.在WHERE谓词附近,第1行,第90列..

这意味着您的AccountDeFinition类的ID是long或Int64,但是您尝试使用字符串查询它.

您需要执行以下 *** 作之一:

>将CustomersDetails(string [] SelectRight)中的string []更改为long [],将GetAccount(字符串ID)中的字符串更改为long ID
>更改返回实体.AccountDeFinition.Find(ID);返回entitIEs.AccountDeFinition.Find(long.Parse(ID));

选项1是更好的选择,但需要更多更改(我建议你这样做),选项2更改较少,但如果ID为null或无法解析为long的值,则可能会爆炸.

总结

以上是内存溢出为你收集整理的c# – 其中一个主键值的类型与实体中定义的类型不匹配.请参阅内部异常了解详细信全部内容,希望文章能够帮你解决c# – 其中一个主键值的类型与实体中定义的类型不匹配.请参阅内部异常了解详细信所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1250240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存