首页
学习
活动
专区
工具
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跟踪需要写入数据库更改,当需要保存数据,调用DbContextSaveChanges方法完成保存。...默认情况下,每次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.5K30

Entity Framework Core 2.0 入门

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

3.2K80

Entity Framework Core 2.0 入门

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

3.5K140

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

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

1.2K80

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

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

5.3K100

Entity Framework Core 2.0 新特性

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

3.8K90

浅析Entity Framework Core中并发处理

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

2.7K90

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

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

69420

UnitOfWork知多少

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

2.3K81

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

2.7K72

Airtest Project:一款免费自动化测试工具

在顶部,有一个菜单栏快捷按钮,用于创建新项目,保存项目,运行脚本检查报告输出。 左上方有Airtest窗口,窗口提供预封装关键字,用于记录捕获Airtest脚本(基于图像识别技术)。...下面的日志输出部分在执行脚本显示相应日志内容。 在右侧,有一个实时手机屏幕,支持使用鼠标事件来远程控制设备。 连接移动设备之前需要做什么?...如果状态为“未授权”,仔细检查是否已启用USB调试,并允许计算机在设备上执行USB调试。 ? 点击connect就可以连接到设备并将设备投影到IDE里,如下所示: ?...只是操作步骤一步一步分解操作,需要自己手动输入或者选择关键字实现操作方法。 同时需要通过自己手动截取定位识别的图片。...以上文章讲解了基于图像基于控件脚本录制方式,如果你能够混合两种方法使用,基于控件定位方式搞不定会就把基于图像添加进来,这样及就可以增加元素识别准确性。增强脚本正确执行能力。

3K50

DDD实战进阶第一波(五):开发一般业务大健康行业直销系统(实现产品上下文领域层)

本篇文章主要讲产品上下文中领域层主要实现,先简单讲下业务方面的需求:产品SPU与产品SKU,产品SPU主要是产品名字相关描述, 产品SKU包括产品SPU多个规格,每个规格有不同价格与PV。...产品上下文主要实现产品上架功能,为了实现上架功能,我们首先要实现产品上下文领域POCO模型与领域逻辑, 我们产品POCO模型与领域逻辑建立到一个叫Product.Domain项目中。...break; } this.Spec = spec; return this; } } 将领域对象属性与领域对象逻辑分到不同...cs文件中,便于不同职责人开发与管理,而且采用相同名称空间Partial关键字。...到这里,我们就基本实现了产品上下文领域层,可以看到领域层主要是领域逻辑,定义了一个仓储接口,数据库技术解耦,当然要定义领域对象与数据库之间映射关系,否则用例无法完成真正 对领域对象持久化。

1.1K50
领券