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-mvc – ASP.NET MVC RenderAction重新呈现整个页面
- asp.net-mvc – 在数据库表中存储用户筛选查询参数的最佳方
- asp.net-core – 程序集中找不到入口点’Microsoft.EntityF
- ASP.NET MVC4安全性,身份验证和授权
- asp.net-mvc – EnumDataType属性在ASP.NET MVC中有什么作用
- asp.net – 如何限制文本框中允许的字符数?
- ASP.NET性能优化之局部缓存分析
- asp.net-mvc – 使用MVC和WebAPI避免使用Resharper web.con
- asp.net-mvc – ASP.NET MVC应用程序中的“坏二进制签名”
- asp.net – html文本框的最大长度是多少?
- asp.net – 如何使用JSON方法序列化javascript对
- asp.net – 如何以编程方式将参数传递给SSRS报告
- asp.net – 什么内容类型强制下载文本响应?
- ef-code-first – ASP.NET Identity – 将用户ID
- asp.net-membership – 成员资格超时和会话超时
- asp.net – FindControl()返回null
- asp.net-mvc – 允许asp.net mvc 2控制器名称的U
- asp.net-mvc – thinktecture identityserver v3
- asp.net-mvc-3 – 如何使MVC3 DisplayFor显示枚举
- 如何使用AutoMapper将多个OBJECTS映射到一个对象
