添加新记录时,Key Attribute属性不会将其值保存到DB。
进一步调查显示,它根本不在SQL语句中。
如何将带有值的记录添加到Key列?
修改 的
这是表格:
CREATE TABLE `members` (
`UniqueID` BIGINT(20) NOT NULL AUTO_INCREMENT,
`MemberID` BIGINT(20) NOT NULL,
PRIMARY KEY (`UniqueID`) USING BTREE,
UNIQUE INDEX `Index_MemberID` (`MemberID`) USING BTREE);
这是实体:
public class Member
{
public long UniqueId { get; set; }
[Key]
public long MemberId { get; set; }
}
答案 0 :(得分:1)
您的映射错误:
您将属性标记为模型中的键,其对应列不是数据库中的主键。
您将密钥属性MemberId
定义为生成的数据库(默认情况下将其关闭,不要将其关闭),但数据库中的列不是自动增量标识。
您可以通过关闭身份来解决第二个问题:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long MemberId { get; set; }
第一点会导致模型中提供的UniqueId
值将被数据库中的自动增量值覆盖的行为。如果将关键属性映射到具有唯一列值约束的非键列的其他问题...我不知道。至少我认为这是关键属性和映射类型的非官方的,不受支持的用法。