У меня есть более сложный вопрос здесь
Но подумал, что я бы упростил это.
Вот мои фиктивные классы (структура, на которой они основаны, пришла из НДЦ, поэтому я не могу их контролировать):
public class RightHand
{
[Key]
public int RightHandId { get; set; }
public string PropertyA { get; set; }
[Required]
public virtual Linker Linker { get; set; }
}
public class LeftHand
{
[Key]
public int LeftHandId { get; set; }
public string PropertyB { get; set; }
[Required]
public virtual Linker Linker { get; set; }
}
public class Linker
{
[Key]
public int LinkerId { get; set; }
[ForeignKey("RightHand")]
public int RightHandId { get; set; }
[ForeignKey("LeftHand")]
public int LeftHandId { get; set; }
public string PropertyC { get; set; }
[Required]
public virtual RightHand RightHand { get; set; }
[Required]
public virtual LeftHand LeftHand { get; set; }
}
Я пробовал очень много вещей, так что, надеюсь, эта упрощенная версия может помочь кому-нибудь помочь мне.
Над всем, я хочу искать:
- LeftHand.PropertyB и посмотрите свойства для RightHand
- Также я хочу выполнить поиск по RightHand.PropertyA и просмотреть свойства для левой руки
В общем, мне нет дела до Линкера, за исключением того, что связывает LeftHand и RightHand. LeftHand и RightHand один к одному.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<RightHand>()
.Property(x => x.RightHandId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<LeftHand>()
.Property(x => x.LeftHandId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Linker>()
.Property(x => x.LinkerId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Linker>()
.HasRequired(nus => nus.LeftHand)
;
modelBuilder.Entity<Linker>()
.HasRequired(nuu => nuu.RightHand)
;
}
Спасибо, я использую VS2017, EF 6.2, Code First, SQL Server
Я пробовал разные аннотации, но одна распространенная ошибка:
Linker_LeftHand_Source:: множественность недопустима в роли 'Linker_LeftHand_Source' в отношении 'Linker_LeftHand'. Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница кратности зависимой роли должна быть «*».
Linker_RightHand_Source:: множественность недопустима в роли 'Linker_RightHand_Source' в отношении 'Linker_RightHand'. Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница кратности зависимой роли должна быть «*».
Что отличается от других ответов о множественности, так это средняя таблица компоновщиков.