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# – 其中一个主键值的类型与实体中定义的类型不匹配.请参阅内部异常了解详细信所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)