C# 实体框架核心2.0自动增量和主键映射
我正在将数据库优先项目转换为代码优先 我有以下课程,我正在使用EF Core 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)]
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进行了更新。