如何将带有值的记录添加到“键属性”列?

时间:2011-11-06 09:20:57

标签: entity-framework-4.1

添加新记录时,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; }
}

1 个答案:

答案 0 :(得分:1)

您的映射错误:

  • 您将属性标记为模型中的键,其对应列不是数据库中的主键。

  • 您将密钥属性MemberId定义为生成的数据库(默认情况下将其关闭,不要将其关闭),但数据库中的列不是自动增量标识。

    < / LI>

您可以通过关闭身份来解决第二个问题:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long MemberId { get; set; }

第一点会导致模型中提供的UniqueId值将被数据库中的自动增量值覆盖的行为。如果将关键属性映射到具有唯一列值约束的非键列的其他问题...我不知道。至少我认为这是关键属性和映射类型的非官方的,不受支持的用法。