asp.net-mvc – EF映射对象不兼容的数据读取器异常
我正在使用实体框架工作,并更新了一个表及其存储过程,但是当调用存储过程时,我收到以下错误。
ValuationId是我想要自动递增的主要关键。 我可以从SQL管理工作室执行存储过程查找,当我运行我的应用程序时,它会写入数据库,然后出现错误消息。 我不熟悉实体框架工作,只是具有基础知识,我认为这可能是来自model.edmx的映射问题。 在模型中重新创建和映射表和存储过程将是正确的过程? 储存程序。 ALTER PROCEDURE [dbo].[ValuationCreate] @TrackingNumber varchar(100),@FormMobiValuationId varchar(100),@ValuationPropertyId int,@ValuationFileName varchar(50) AS SET NOCOUNT ON SET XACT_ABORT ON DECLARE @ErrorMessage varchar(1000) BEGIN TRANSACTION --Insert to Valuation INSERT INTO [Valuation] ( TrackingNumber,FormMobiValuationId,ValuationPropertyId,-- new ValuationFileName,Date,ValuationStatus,IsActive ) VALUES ( @TrackingNumber,@FormMobiValuationId,@ValuationPropertyId,--new @ValuationFileName,GETDATE(),1,--Created 1 ) IF @@ERROR > 0 BEGIN SET @ErrorMessage = 'Valuation Insert failed' GOTO ErrorHandler END ELSE BEGIN COMMIT TRANSACTION RETURN END ErrorHandler: RAISERROR(@ErrorMessage,16,1); ROLLBACK TRANSACTION RETURN -1 C#调用发生错误,错误信息出现在最后一行。 public ObjectResult<Valuation> ValuationCreate(global::System.String trackingNumber,global::System.String formMobiValuationId,Nullable<global::System.Int32> valuationPropertyId,global::System.String valuationFileName) { ObjectParameter trackingNumberParameter; if (trackingNumber != null) { trackingNumberParameter = new ObjectParameter("TrackingNumber",trackingNumber); } else { trackingNumberParameter = new ObjectParameter("TrackingNumber",typeof(global::System.String)); } ObjectParameter formMobiValuationIdParameter; if (formMobiValuationId != null) { formMobiValuationIdParameter = new ObjectParameter("FormMobiValuationId",formMobiValuationId); } else { formMobiValuationIdParameter = new ObjectParameter("FormMobiValuationId",typeof(global::System.String)); } ObjectParameter valuationPropertyIdParameter; if (valuationPropertyId.HasValue) { valuationPropertyIdParameter = new ObjectParameter("ValuationPropertyId",valuationPropertyId); } else { valuationPropertyIdParameter = new ObjectParameter("ValuationPropertyId",typeof(global::System.Int32)); } ObjectParameter valuationFileNameParameter; if (valuationFileName != null) { valuationFileNameParameter = new ObjectParameter("ValuationFileName",valuationFileName); } else { valuationFileNameParameter = new ObjectParameter("ValuationFileName",typeof(global::System.String)); } return base.ExecuteFunction<Valuation>("ValuationCreate",trackingNumberParameter,formMobiValuationIdParameter,valuationPropertyIdParameter,valuationFileNameParameter); } 解决方法
消息表示存储过程的结果不包含名为ValudationId的列。仔细检查您的选择语句并在SSMS中运行它,以确保您将该列返回。
编辑:您的过程不包含select语句。您需要选择插入的身份值(例如,使用scope_identity()函数),以便EF可将其映射回实体。 例如, insert into Table ( Col1,Col2 ) values ( 1,2 ) select scope_identity() as IdentityColName 另外,除此之外,您的insert语句中不需要所有的交易业务;你只有一个声明(你的插入)修改数据。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 做一个ASP.NET网站的更改杀死活动会话?
- 启动ASP.NET窗体身份验证
- asp.net – 如何格式化C#代码并将其转换为HTML
- asp.net-mvc-4 – ajax post works vs. angularjs $http无法
- asp.net – MSDeploy连接字符串的自动加密,字典中找不到密钥
- asp.net-mvc-4 – ASP.NET MVC 4通过ActionLink传递对象变量
- asp.net – 处理程序执行子请求时出错’System.Web.Mvc.Htt
- 使用.NET 4.5的ASP.Net成员身份和实体框架迁移的问题
- asp.net-mvc-3 – 在MVC中设置403错误页面
- asp.net-mvc – 使用jQuery getJson发送list/array作为参数
- asp.net core 日志
- asp.net-mvc-2 – 从.NET MVC 1迁移到MVC 2 RC
- asp.net-core – VS2017 RC Web部署 – ERROR_CE
- asp.net奇怪的异常每隔三分钟左右
- ASP.net上的URL路由,需要从url获取参数
- asp.net – 从网站下载后文件上的数字签名
- asp.net-mvc – Knockout Js,JQuery UI Dialog和
- asp.net-mvc – 数据注释真的是一个好主意验证吗
- 启用禁用按钮asp .net – 使用javascript
- asp.net-mvc-3 – 重定向(relativeUrl)重定向到I