【发布时间】:2020-01-17 19:52:12
【问题描述】:
我一直在使用 .NET Core 和 Pomelo.EntityFrameworkCore.MySql(v1.1.2,它不是最新的,但出于各种原因我更愿意继续使用它)。
我正在对模型类进行一些重构,创建子父关系(例如,订单有一个客户),现在当我运行我的项目时出现异常
2019-09-16T12:36:49.8158085-07:00 0HLPQRKH27D40 [INF] Executed DbCommand (6ms) [Parameters=[],
CommandType='Text', CommandTimeout='0']
INSERT INTO `Order`
DEFAULT VALUES;
SELECT LAST_INSERT_ID(); (6438bdd5)
2019-09-16T12:36:49.9249074-07:00 0HLPQRKH27D40 [ERR] An exception occurred in the database while saving changes.
(3b5ca34b)
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> MySql.Data.MySqlClient.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT VALUES;
问题似乎是在insert into 'order' default values; 中使用了default values,因为MySQL doesn't support that syntax。我的 mysql 开发版本是 5.1,但这似乎无关紧要,因为它似乎不在更高版本中。
我(天真地)查看了 Pomelo 源代码,但只发现在单元测试中使用了“默认值”。
【问题讨论】:
-
什么操作产生了异常?添加新的
Order?如果是,看起来所有Order属性都使用默认值。确保至少一个属性/列没有HasDefaultValue或HasDefaultValueSql设置(或在 1.1.2 中调用的任何内容)并且也不是由数据库自动生成的。如需更具体的答案,请发布Order实体类和相关的流畅配置。 -
谢谢@IvanStoev,我正在按顺序将属性映射到另一个对象的属性,例如
public string PropA => obj.ProbA,当我停止这样做并使用getter 和setter 将其更改为长格式时,它开始工作。如果您愿意将其写为答案,我会接受。 -
哦,实际上在属性中使用
=>会将它们从数据库表中删除,我没有意识到这一点。
标签: c# mysql .net-core entity-framework-core