【问题标题】:Can I get a primary key to auto-increment in Entity Framework, while having other key我可以在实体框架中获得自动递增的主键,同时拥有其他键吗
【发布时间】:2017-05-26 15:33:17
【问题描述】:

我正在使用 Entity Framework 和 VS 2015 开发 MVC 项目。

到目前为止它一直有效。现在我已经创建了一个关系表实体来链接两个表,但我无法让键列自动递增。这是因为我不想删除现有表中的某些约束,所以我选择创建一个单独的实体。

看起来像这样:

public class UserCustomer
{

    [Key]
    public int UserCustomerID { get; set; }
    [Index("IX_UserAndCustomer", 1, IsUnique = true)]
    public int UserID { get; set; }
    [Index("IX_UserAndCustomer", 2, IsUnique = true)]
    public int CustomerID { get; set; }

    public DateTime CreatedDate { get; set; }

    public UserCustomer()
    {
        CreatedDate = DateTime.Now;
    }

}

键列不会自动递增。

我尝试过 Fluent API,例如:

        //modelBuilder.Entity<UserCustomer>()
        //    .HasKey(u => new { u.CustomerID, u.UserID }); //26 maj -17

        //modelBuilder.Entity<UserCustomer>()
        //.Property(f => f.UserCustomerID)
        //.ValueGeneratedOnAdd();

        //modelBuilder.Entity<UserCustomer>()
        //    .Property(c => c.UserCustomerID)
        //    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);//TYY Stack Overflow

但这没有奏效。

如何使 UserCustomerID 列自动递增,作为键列?

【问题讨论】:

    标签: c# entity-framework unique data-annotations


    【解决方案1】:

    如果我正确理解您的问题,您只需要DatabaseGeneratedAttribue:

    public class UserCustomer
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int UserCustomerID { get; set; }
    }
    

    【讨论】:

    • 这与 OP 没有什么不同,因为它是 int PK 的默认 EF 约定。
    猜你喜欢
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多