7
我有兩個表Projects
和Task
。 Task
是一個項目的弱實體,所以任務的複合主鍵是(ProjectId & TaskID
)。我試着用下面的代碼來做這件事,但它給出了一個錯誤使用實體框架創建複合主鍵4.1
無法定義表'任務'中的可爲空的列的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);
}
這裏是一個確認這個soltuion的教程:http://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.aspx – CodeToad