首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试使用DbContext使用.Add()方法保存时,"无法将值插入列".请检查我的POCO和保存方法

问题:尝试使用DbContext使用.Add()方法保存时,"无法将值插入列".请检查我的POCO和保存方法


答案

无法将值插入列"是DbContext使用.Add()方法在保存时可能遇到的错误。这个错误通常发生在POCO(Plain Old CLR Object)对象与数据库表的字段类型不匹配的情况下。

首先,确保你的POCO对象与数据库表的字段类型匹配。如果它们不匹配,请考虑使用自动映射功能(如Code First Migrations)或手动将POCO对象映射到数据库表的字段。

其次,检查你的SaveChanges()方法调用。DbContext会尝试自动将属性名称与数据库表的字段名称匹配。如果属性名称与字段名称不匹配,则需要使用Column("FieldName")属性将它们映射。

最后,确保你的POCO对象有可序列化的属性。如果一个字段是数据库表中自增长的ID,那么它可能不会在POCO对象中自动生成。在这种情况下,你需要使用DatabaseGenerated(DatabaseGeneratedOption.None)属性来指定该属性由数据库生成。

如果你的问题仍然存在,那么可能需要检查你的数据库架构和DbContext的配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

02-EF Core笔记之保存数据

EF Core通过ChangeTracker跟踪需要写入数据库的更改,当需要保存数据时,调用DbContext的SaveChanges方法完成保存。...默认情况下,每次SaveChanges方法的所保存的所有更改都将在一个事务中,要么全部保存成功,要么全部保存失败。此种情况已能满足大多数应用的需要。...在检测到并发冲突后,EF Core会引发DbUpdateConcurrencyException异常,该异常中提供了一些有用的参数来帮助我们解决冲突: “当前值”是应用程序尝试写入数据库的值。...解决这个问题最简单的方法是,更新和添加使用不同的web路径,服务器端通过提供Add方法和Update方法来区分操作。...一种可用的方案是采用软删除,将数据标记为已删除,此时的操作与更新相同。然后在查询数据时,使用查询筛选器,将标记为已删除的数据过滤掉,从而达到删除的效果。

1.8K40
  • Entity Framework 4.1 Code-First 学习笔记

    我们将增加一个静态的构造函数,这个静态的构造函数对于整个应用程序域来说建立一个标准,当数据库的上下文初始化的时候,检查数据库的架构是否与模型相符,如果不是的话,将删除数据库然后重新创建它。...这一点可以理解,最小长度会在数据存储时进行验证,如果小于2将会抛出异常,无法完成保存。   ...每种实现类型一张表 TPC: 有点像其他两个的混合,对于每种实现类型映射到一张表,抽象类型像 TPH 一样展开到表中。 这里我将讨论 TPT 和 TPH,EF 的好处是可以混合使用这些方式。...混合使用 TPH 和 TPT:我定义了 Worker 的两个子类,我希望将这两个类和 Worker 基类映射到一张表: publicclass Manager : Worker { publicint...另外一个 EF 映射管理的方法是使用 Entity SQL,这种方式是 EF 将实体模型转换为物理模型,然后将Linq查询添加到物理模型中,最后将物理模型转换为数据库存储的查询。

    1.6K10

    Airtest的探索使用

    具体连接操作步骤如下: 确保手机开启了USB调试选项,并先用USB线将手机和电脑连接起来 在电脑端执行命令 adb tcpip 5555 ,其中 5555 是端口号,可以根据自己的需求来指定,5555是默认值...更多使用命令行运行脚本信息,请参考文档。 在使用 AirtestIDE 运行脚本时,会在 “Log 查看窗” 中自动生成一个可用的命令行,可以供大家作为参考。...,如果使用的python版本低于3.7,请直接运行: pip uninstall opencv-contrib-python # 若以下安装语句运行失败,可以尝试更新pip到最新版本后重试 pip install...interval:尝试找到匹配项的时间间隔(秒) intervalfunc:在每次未成功尝试找到相应匹配项后调用 返回值:匹配目标的坐标 16).检查给定目标在设备屏幕上是否存在 exists(v)...,msg) #断言两个值相等 assert_not_equal(v1,v2,msg) #断言两个值不相等 v1:第一个值 v2:第二个值 msg:断言的简短描述 这里基本上我们就把使用方法说完了,下面我们来进行下实际操作

    1.6K30

    Entity Framework Core 2.0 入门

    也可以): 输入用户名: 密码: 选择是否保存密码: 最后输入档案的名字: 随后VSCode将尝试连接该数据库, 成功后右下角会这样显示 (我这里输入有一个错误, 数据库名字应该是LearnEF): 随后在该文件中输入下面这个...在老版本到ef里, migration历史表里面还保存着当时到迁移的快照, 创建迁移的时候还需要与数据库打交道. 这就是我上面提到的如果团队使用ef和源码管理的话, 就会遇到这个非常令人头疼的问题....SaveChanges方法, 会检查所有被追踪的models, 读取他们的状态. 这里用到是Add方法, context就会知道这个model的状态是new, 所以就应该被插入到数据库....可以使用AddRange添加多条数据. 其参数可以是params或者集合. 可以看到这个和之前Add的Sql语句是完全不同的: 这个语句我不是很明白....批量添加不同类型的数据: 使用context的AddRange或Add方法, DbContext可以推断出参数的类型, 并执行正确的操作.

    3.2K80

    Entity Framework Core 2.0 入门

    也可以): 输入用户名: 密码: 选择是否保存密码: 最后输入档案的名字: 随后VSCode将尝试连接该数据库, 成功后右下角会这样显示 (我这里输入有一个错误, 数据库名字应该是LearnEF...在老版本到ef里, migration历史表里面还保存着当时到迁移的快照, 创建迁移的时候还需要与数据库打交道. 这就是我上面提到的如果团队使用ef和源码管理的话, 就会遇到这个非常令人头疼的问题....SaveChanges方法, 会检查所有被追踪的models, 读取他们的状态. 这里用到是Add方法, context就会知道这个model的状态是new, 所以就应该被插入到数据库....可以使用AddRange添加多条数据. 其参数可以是params或者集合. 可以看到这个和之前Add的Sql语句是完全不同的: 这个语句我不是很明白....批量添加不同类型的数据: 使用context的AddRange或Add方法, DbContext可以推断出参数的类型, 并执行正确的操作.

    3.5K140

    七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理

    l 模型优先方法——模型优先指模型类及模型之间的关系是由Model设计人员在VS中手动生成和设计的,EF将模型生成数据访问层和数据库。 l 代码优先方法——代码优先指手动创建POCO类。...当请求类型是Get,Put或Delete时,值会通过查询语句发送,当请求是Post类型,值会通过Post数据传送。 使用输入控件名的作用是什么? 所有输入控件的值将随着请求一起发送。...测试保存和取消功能 关于实验11 在实验11中为什么将保存和取消按钮设置为同名? 在日常使用中,点击提交按钮之后,请求会被发送到服务器端,所有输入控件的值都将被发送。提交按钮也是输入按钮的一种。...因此提交按钮的值也会被发送。 当保存按钮被点击时,保存按钮的值也会随着请求被发送到服务器端,当点击取消按钮时,取消按钮的值”取消“会随着请求发送。...当匹配成功时: 如果接收的值是空,则会将空值分配给属性,如果无法执行空值分配,会设置缺省值,ModelState.IsValid将设置为fasle。

    5.3K100

    .NET Core采用的全新配置系统: 将配置保存在数据库中

    四、DbConfigurationProvider 五、扩展方法AddDatabase 一、在应用中使用自定义的DbConfigurationSource 我们将这个自定义ConfigurationSource...我们将配置保存在SQL Server数据库中的某个数据表中,并采用Entity Framework Core来读取配置,所以我们需要添加针对“ Microsoft.EntityFrameworkCore...针对DbConfigurationSource的注册体现在扩展方法AddDatabase上,这个方法接收两个参数,它们分别代表链接字符串的名称和初始的配置数据。...ConfigurationBuilder定义的扩展方法AddDatabase上,所以使用起来是非常方便的,那么这个扩展方法背后有着怎样的逻辑实现呢?...如果数据表中没有数据,该方法还会利用这个DbContext对象将提供的初始化配置添加到数据库中。

    1.3K80

    Entity Framework Core 2.0 新特性

    : 在生成SQL时,该方法的名称将用作函数的名称(在本例中为用户定义的函数),但在方法注册期间可以覆盖名称和模式 目前只支持标量功能 必须自行在数据库中创建映射函数,EF Core迁移不会对其进行创建...>( options => options.UseSqlServer(connectionString)); 如果使用连接池,则在控制器请求DbContext实例时,将首先检查池中是否有可用的实例...3.3FromSql和ExecuteSqlCommand中的字符串插值 C#6(C#6.0特性请移步:这里)中引入了字符串插值,这是一个允许C#表达式直接嵌入到字符串文字中的功能,提供了一种在运行时构建字符串的好方法...在EF核2.0,我们增加了对插值字符串中的特殊支持,我们接受原始的SQL字符串两个主要的API:FromSql和ExecuteSqlCommand。...这种新的支持允许以“安全”的方式使用C#字符串插值。这样就可以防止在运行时动态构建SQL时发生的常见SQL注入攻击.

    3.9K90

    浅析Entity Framework Core中的并发处理

    如果一个属性被配置为并发令牌,则EF将在保存这条记录时,会检查没有其他用户修改过数据库中的这个属性的值。...EF使用了乐观并发策略,这意味着它将假定值没有改变,并尝试保存数据,但如果发现值已更改,则抛出异常。 举个例子,我们有一个用户类(User),我们配置 User中的 Name为并发令牌。...这意味着,如果一个用户试图保存一个有些变化的 User,但另一个用户已经改变了 Name那么将抛出一个异常。...使用之前,我们先来了解一下,并发过程中所产生的3个值,也是我们需要处理的3个值        1.当前值是应用程序尝试写入数据库的值。        ...在异常中,我们将当前上下文的版本号和数据库现有的版本号进行对比,发现当前上下文的版本号为过期数据,则不更新,并返回失败. 请仔细看代码中的注释.

    2.8K90

    【译】MongoDB EF Core 提供程序:有什么新功能?

    功能亮点 添加属性和更改跟踪 MongoDB 文档模型的优点之一是它支持灵活的架构。再加上 EF Core 支持 Code First 方法的能力,您可以动态向实体添加属性。...接下来,让我们在刚刚添加的两行代码中添加一个断点,以确保我们可以在继续操作时实时跟踪更改。选择“开始调试”按钮来运行应用程序。当第一个断点被击中时,我们可以看到本地字段值已被分配。...让我们点击“继续”并检查数据库中的文档。我们可以看到新字段尚未添加。让我们跳过将结束程序的“保存更改”调用。此时,如果我们检查数据库中的文档,我们会注意到新字段已添加,如下所示!...这包括但不限于索引管理、Atlas 搜索和矢量搜索等功能。 我们将了解如何在同一个应用程序中使用驱动程序创建新索引。首先,我们将列出集合中的索引,以查看哪些索引已经存在。...根据模型类中可用的字段,我们可以尝试从我们的收藏中查找一些有趣的电影。假设我想查找所有评级为“PG-13”且情节包含单词“shark”的电影,但我希望按标题字段对它们进行排序。

    7110

    如何运用领域驱动设计 - 工作单元

    而作为后期的业务扩展和维护,我们只需要完善我们的Itinerary聚合(为它扩展行为和增加实体或值对象)以及ItineraryRepository仓储(为它添加对外检索意图的方法)就可以了。...每使用一个仓储就要多写一次获取语句,我就不能好好的只使用仓储吗? 所以在这个想法的强烈刺激下,我选取了另外的实现方法。 接下来,就让我们来实现最开始演示代码中的工作单元吧。...执行仓储中的内容 DbContext.Set().Add(itinerary) //4、工作单元保存提交 uow.SaveChanges...,那么可以尝试使用该实现。...在实现MiCake真正的工作单元中,我尝试了很多方法来解决上面的问题。在后面的文章中,您也会看到MiCake真正的工作单元。 附上一个当时写工作单元的手记( ̄︶ ̄)↗ ?

    73420

    UnitOfWork知多少

    UOW的本质 通过以上的介绍,我们可以总结出实现UOW的几个要点: UOW跟踪变化 UOW维护了一个变更列表 UOW将跟踪到的已变更的对象保存到变更列表中 UOW借助事务一次性提交变更列表中的所有更改...EF中的UOW 每个DbContext类型实例都有一个ChangeTracker用来跟踪记录实体的变化。当调用SaveChanges时,所有的更改将通过事务一次性提交到数据库。...这样就形成了一条链:Uow->仓储-->聚合-->实体和值对象。即Uow负责管理仓储处理事务,仓储管理单一聚合,聚合又由实体和值对象组成。 下面我们就先来定义实体和值对象,这里我们使用层超类型。...(); } } } 既然Uow接手保存操作,自然我们需要:注释掉EfCoreRepository中Insert、Update、Delete方法中的显式保存调用_dbContext.SaveChanges...依赖注入 我们直接使用.net core 提供的依赖注入,依次注入DbContext、UnitOfWork和Repository。

    2.4K81

    DataReader类型化数据读取与装箱性能研究

    AdoHelper对象的ExecuteMapper方法将数据查询结果封装成一个DataReaderMapper对象,然后可以使用该对象的MapToList方法使用DataReader对象的类型化数据读取方法...,将读取的值赋值给要映射的对象的属性,例如这里的UserDto对象。...下面是QueryList方法的定义和使用示例: /// /// 根据SQL格式化串和可选的参数,直接查询结果并映射到POCO 对象 /// ///...在当前QueryList方法中没用对DataReader对象读取的数据进行装箱,但是这种方式相比测试方式1的手写映射方式性能还是要低,猜测方法内部进行了复杂的处理,否则无法解释测试方式2测试代码中类型化数据读取后数据进行装箱后供数据访问器使用...4,类型化读取到数组元素中 如果DataReader对象类型化读取速度一定比非类型化数据读取方法GetValues快,那么可以尝试将类型化数据读取的值装箱到数组元素中,这样有可能提高SOD框架现有的QueryList

    1.6K20

    用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 + 项目准备

    例如 环境变量值如果是Developmen的话, 那么运行时就会尝试寻找Startup和StartupDevelopment类, 该约定在启动类里面的方法名上也有效, 环境特定的启动类里的两个方法分别是...针对上面的firstConfig.json文件, 我们创建以下这个类: 然后调用IConfiguration的Bind扩展方法来把键值对集合对值映射到这个强类型对POCO实例里: 在标准的ASP.NET...记录Log的时候,通常情况下使用那几个扩展方法就足够了: 请注意,这里我注入的是ILogger类型的logger,其中T可以用来表示日志的分类,它可以是任何类型,但通常是记录日志时所在的类。...记录的日志信息是可以带参数的, 使用消息模板(也就是消息主题和参数分开), 格式如下: 同样也支持字符串插值: 第二种方式代码的可读性更强一些, 而且它们输出的结果没有什么区别: 但是对于日志系统来说...里面注册DbContext, 我使用的是内存数据库: 这里要注意: 由于使用的是内存数据库, 所以迁移等一些配置都可以省略了....

    2.7K72

    用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

    然后调用IConfiguration的Bind扩展方法来把键值对集合对值映射到这个强类型对POCO实例里: ?...记录的日志信息是可以带参数的, 使用消息模板(也就是消息主题和参数分开), 格式如下: ? 同样也支持字符串插值: ? 第二种方式代码的可读性更强一些, 而且它们输出的结果没有什么区别: ?...此外, 用重载的方法, 记录日志时也可以包含异常对象....也就是说会存在这种情况, 某个Controller的Action方法里, 使用了多个不同的Repository, 分别做了个新增, 修改, 删除等操作, 但是保存的时候还是需要MyContext来做,...这里我又给Repository添加了一个Add方法用于测试, 结果如下: ? 好的, 没问题.

    1.1K00
    领券