EF 映射对象的不兼容数据读取器异常

2024-03-19

我正在使用实体框架并更新了表及其存储过程,但在调用存储过程时出现以下错误。

数据读取器与指定的不兼容 'FormValueModel.Valuation'。类型的成员“ValuationId”确实 数据读取器中没有同名的相应列。

ValuationId 是我的主键,我想自动递增。

我可以从 SQL Management Studio 执行存储过程 find,当我运行应用程序时,它会写入数据库,但随后会出现错误消息。

我不熟悉实体框架,只有基础知识,我认为这可能是 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。仔细检查你的select语句并在 SSMS 中运行它以确保您恢复该列。

EDIT:您的程序不包含select陈述。您需要选择插入的标识值(使用scope_identity()函数,例如),以便 EF 可以将其映射回实体。

例如,

insert into Table
(
    Col1,
    Col2
)
values
(
    1,
    2
)

select scope_identity() as IdentityColName

另外,顺便说一句,您不需要插入语句中的所有事务业务;您只有一个修改数据的语句(您的插入)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF 映射对象的不兼容数据读取器异常 的相关文章

随机推荐

  • 如何实现Android Fragment Transaction .add语法错误

    我想让我的 Android 应用程序使用 Fragment Transactions 这样我就可以 在各个 Fragment 之间切换会显示其关联列表 我的应用程序 在尝试转换为片段交易之前工作正常 在我最初的activity main x
  • Rails 委托方法如何工作?

    阅读下面 jvans 的答案并再查看源代码几次后 我现在明白了 如果有人仍然想知道 Rails delegate 到底是如何工作的 Rails 所做的就是在运行委托方法的文件 类中使用 module eval 创建一个新方法 例如 clas
  • 将 `std::copy()` 与 `std::back_inserter()` 一起使用

    我有两个 A 类和 B 类 都有一个如下所示的成员 class A std vector
  • 在我按照 OWAPS 和 Roslyn Security Guard 的建议应用解决方案后,Veracode 仍然报告操作系统命令注入问题

    我的项目中的当前代码如下所示 Veracode 报告存在操作系统命令注入 filename Regex Replace filename a zA Z0 9 svg ProcessStartInfo startInfo default Pr
  • iOS 9 - Facebook 无法打开已安装的 iOS 应用程序

    iOS 9 和 Facebook 问题 在 iOS9 之前 Facebook 帖子可以通过短 URL 例如 bet365 成功地将用户重定向到已安装的应用程序 现在 在 iOS 9 中 bet365 给出无效链接 从 Safari 可以正常
  • 注册表观察程序 C#

    我是 WMI 的新手 我需要实施注册表值更改事件 http msdn microsoft com en us library aa393042 VS 85 aspx在 C 服务中 我需要一个事件处理程序 每次更改一组注册表值中的任何一个值时
  • C++ 中排列、组合和 PowerSet 的实现 [重复]

    这个问题在这里已经有答案了 我正在寻找使用 C 实现排列 组合和幂集 使用STL 排列 using std next permutation template
  • Char* 字符数组,但 int* 不是整数数组?

    在 C99 中 字符串通常通过使用char 数据类型 因为没有原始的 字符串 数据类型 通过将第一个字符的地址存储在变量中 这有效地创建了一个字符数组 FILE out fopen out txt w char s argv 1 fwrit
  • 为什么执行sonar:sonar时找不到sonar-maven-plugin-3.0.1.jar?

    我们目前正在将 重新激活 声纳纳入我们的持续构建过程中 但我们遇到了一些问题 为了只专注于声纳 我尝试让它在 HelloWorld 项目上工作 但仍然没有成功 repo1 和 repo2 中似乎缺少一个 jar sonar maven pl
  • 启动长时间后台任务

    用户请求我网站上的某些页面 我想做的事 向用户发送快速答案并启动需要很长时间的后台任务 看起来像 public ActionResult index var task new Task Stuff start task async task
  • 删除自定义 ActionBar 中的多余空间

    我的问题涉及使用完全自定义的 ActionBar 视图 因为这对于我的客户希望 ActionBar 的工作方式是必要的 我已经删除了徽标 标题和其他所有可能的内容 但是 ActionBar 的自定义视图不会一直延伸到整个屏幕 我尝试了以下方
  • 单击图像时播放 MP3

    我想在单击网站中的某个图像时播放 MP3 文件 我还想隐藏 MP3 文件 我怎样才能做到这一点 我尝试了这段代码 但没有任何反应
  • BOT/蜘蛛陷阱创意

    我有一个客户 他的域名似乎受到 DDoS 攻击的严重打击 在日志中 看起来很正常的具有随机 IP 的用户代理 但它们翻阅页面的速度太快 不像人类 他们似乎也没有要求任何图像 我似乎找不到任何模式 我怀疑这是一群 Windows 僵尸 客户过
  • 更快地重新连接 CBPeripheral

    我正在开发一个应用程序 它可以多次连接和断开不同的蓝牙低功耗外围设备 经过在互联网上的大量研究 我没有找到一种方法来存储已经发现的服务和特征 以便我可以更快地重新连接 目前 我正在每次重新连接后发现所需的服务和特征 这花费了我 1 5 到
  • 打字稿错误 get 调用需要 0 个类型参数

    我收到打字稿错误预期 0 类型参数 但返回 get 调用的行却得到 1 我的通话有什么问题吗 public get params SummaryParams Observable
  • “OutOfMemoryException”读取 20mb XLSX 文件

    我在用着NPOI https www nuget org packages NPOI 来处理Excel文件 这是我读取文件的方式 using FileStream stream File OpenRead excelFilePath IWo
  • fill-rule="evenodd" 如何在星形 SVG 上工作

    当我试图理解时 我看到了以下 svg 形状fill rule in SVG div class contain demo div
  • 该浮点数小数部分的前 32 位是多少?

    我正在看以下内容SHA256 伪代码 http en wikipedia org wiki SHA 2 SHA 256 28a SHA 2 variant 29 pseudocode在维基百科上 具体来说 我正在查看以下部分 Initial
  • 打印文本而不是 C 枚举中的值

    int main enum Days Sunday Monday Tuesday Wednesday Thursday Friday Saturday Days TheDay int j 0 printf Please enter the
  • EF 映射对象的不兼容数据读取器异常

    我正在使用实体框架并更新了表及其存储过程 但在调用存储过程时出现以下错误 数据读取器与指定的不兼容 FormValueModel Valuation 类型的成员 ValuationId 确实 数据读取器中没有同名的相应列 Valuation