【发布时间】:2011-12-01 00:51:32
【问题描述】:
My SQL 表包含一个 Id 列,其数据类型为 uniqueidentifier。根据 SO 上的建议,我已将其设置为默认值 (newid()) 。
首先使用带有代码的 Entity Framework 4.2,然后我将我的 Guid 属性映射到 SQL 中的相关字段:
[Key]
public Guid Id { get; set; }
但是,每当我尝试插入实体时,都会收到以下异常:
其中一个主键值的类型与实体中定义的类型不匹配。
参数类型“Edm.Guid”和“Edm.String”不兼容此操作。在 WHERE 谓词附近,第 1 行,第 61 列。
我在此处和 Google 上都能找到的唯一解决方案是在我的 ID 上添加 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 作为数据注释。这不会改变任何事情 - 那么还有什么可能导致此错误?
提前致谢。
【问题讨论】:
-
谢谢@Siva。如果我错了,请纠正我,但我相信这不适用于我的情况,因为我首先使用不使用 .edmx 文件的代码。
-
您是否尝试将 guid 设置为可为空,即
guid?它将具有默认值 guid.Empty ({00000000-0000-0000-0000-000000000000}) 并且 EF 可能正在尝试插入这个值不为空。 -
显示导致问题的代码并为您的数据库表创建脚本。
标签: c# sql entity-framework ef-code-first