实体框架Core 2.0自动增量和主键映射

时间:2018-01-10 10:32:32

标签: c# entity-framework-core asp.net-core-2.0

我正在努力将数据库优先项目转换为代码优先。

我有以下课程,我正在使用EF Core 2.0:

public class WorkUser
{
    public int WorkUserId { get; set; }

    public int UserId { get; set; }
}

我尝试了以下操作,但不确定它是否正确。

public class WorkUser
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int WorkUserId { get; set; }

    [Key]
    public int UserId { get; set; }
}

我希望WorkUserId作为自动增量属性,UserId作为主键。 UserId值来自另一个表。所以希望这是主键,但没有自动增量。

如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

以下按预期工作:

public class WorkUser
{
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int WorkUserId { get; set; }

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int UserId { get; set; }
}

答案 1 :(得分:1)

尝试一下:

public class SampleContext:DBContext{
public DbSet<WorkUser> WorkUsers{ get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder){
    modelBuilder.Entity<WorkUser>()
        .Property(p => p.WorkUserId )
        .ValueGeneratedOnAdd();
 }
}