C# 实体框架核心2.0自动增量和主键映射

C# 实体框架核心2.0自动增量和主键映射,c#,entity-framework-core,asp.net-core-2.0,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)]

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

我有以下课程,我正在使用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
值来自另一个表。所以希望它是主键,但没有自动递增


如何做到这一点?

以下各项工作如我所料:

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

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

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

protected override void OnModelCreating(ModelBuilder modelBuilder){
    modelBuilder.Entity<WorkUser>()
        .Property(p => p.WorkUserId )
        .ValueGeneratedOnAdd();
 }
}
public类SampleContext:DBContext{
公共数据库集工作用户{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder){
modelBuilder.Entity()
.Property(p=>p.WorkUserId)
.ValueGeneratedOnAdd();
}
}

您是否确实尝试过您的代码?它生成了什么?什么是
BaseEntity
?你有问题吗?如果有,是什么问题?现在,这不是一个真正的问题。但您需要确保将
UserId
设置为有效的唯一值。如果此表具有多对多关系,则需要同时包含
用户ID
工作用户ID
(即添加
属性和带有
顺序
属性的
属性。)@Zhaph BenDuguid谢谢。此表不会有多对多关系。@我已通过删除baseentity进行了更新。