Mam dwie tabele Projects
i Task
. Task
jest słabą jednostką projektu, więc złożonym kluczem podstawowym zadania jest (ProjectId & TaskID
). Próbowałem robić to z następującego kodu, ale daje błądTworzenie złożonego klucza podstawowego za pomocą struktury obiektu 4.1
nie można zdefiniować klucz podstawowy o wartości pustych kolumny w tabeli „Zadania”.
Używam podejście kodu najpierw tworzyć tabele i mam zapewnione, że kolumna nie jest zerowa, ale nadal nie działa. Proszę pomóż!
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);
}
Oto tutorial, który potwierdza tę soltyion: http://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.aspx – CodeToad