Используя EF6, я пытаюсь определить следующее отношение A(1)---(0..1)C(0..1)---(1)B
((x)
- это мощность). Затем таблица C будет использовать составной ключ из двух внешних ключей из A и B.
// Other properties are omitted for brevity
public class A
{
public int Id { get; set; }
public virtual C C { get; set; }
}
public class B
{
public int Id { get; set; }
public virtual C C { get; set; }
}
public class C
{
public virtual A A { get; set; }
public virtual B B { get; set; }
}
Это свободный API, который я придумал.
public class C : EntityTypeConfiguration<C>
{
public C()
{
// Primary Key
this.HasKey(t => new { t.A, t.B}); // This is the problem
// Relationships
this.HasRequired(t => t.A)
.WithOptional(t => t.C);
// cannot use .HasForeignKey
this.HasRequired(t => t.B)
.WithOptional(t => t.C);
// cannot use .HasForeignKey
}
}
HasKey(t => new { t.A, t.B})
не разрешено, и требуется скалярное свойство, обычно устанавливаемое с .HasForeignKey
. Однако, поскольку это один на один, я не могу его использовать.
Что делать?