我有两张桌子Projects
和Task
. Task
是项目的弱实体,所以task的复合主键是( ProjectId & TaskID
)。我尝试使用以下代码这样做,但它给出了一个错误
无法在表 'Tasks' 中的可为空列上定义 PRIMARY KEY 约束。
我正在使用代码优先的方法来创建表,并且我确保该列不为空,但它仍然无法正常工作。请帮忙!
public class Task
{
[ForeignKey("ProjectId")]
public Project Project { get; set; }
[Required]
public int ProjectId { get; set; }
//[Key, Column(Order = 1)]
[Required]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public virtual int TaskID { get; set; }
...
}
//using FluentAPI
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Task>().HasRequired(p => p.Project);
modelBuilder.Entity<Task>().HasKey(p => new { p.ProjectId, p.TaskID });
modelBuilder.Entity<Project>()
.HasRequired(e=> e.Employee)
.WithMany()
.WillCascadeOnDelete(false);
}