Ho due tabelle Projects
e Task
. Task
è un'entità debole di un progetto, pertanto la chiave primaria composta dell'attività è (ProjectId & TaskID
). Ho provato a farlo con il seguente codice, ma si dà un erroreCreazione di una chiave primaria composta utilizzando il framework di entità 4.1
Impossibile definire vincolo PRIMARY KEY sulla colonna Null nella tabella 'Attività'.
sto utilizzando l'approccio in codice prima di creare le tabelle e ho fatto sì che la colonna non è nullo, ma non è ancora funzionante. Per favore aiuto!
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);
}
ecco un tutorial che conferma questa soluzione: http://www.entityframeworktutorial.net/code-first/key-dataannotations-attribute-in-code-first.aspx – CodeToad