Мои сущности похожи на ниже:
public class Class1
{
public int Id { get; set; }
[StringLength(50)]
public string Name { get; set; }
public virtual Class2 Class2{ get; set; }
}
public class Class2
{
[ForeignKey("Class1")]
public int Id { get; set; }
public int? Price { get; set; }
public virtual Class1 Class1{ get; set; }
}
Мне нужно отношение один к нулю-один между этими двумя объектами в SQLite-Code-First. Поэтому я использовал следующий код:
modelBuilder.Entity<Class1>()
.HasOptional(s => s.Class2)
.WithRequired(c => c.Class1);
Но, к сожалению, это не похоже на работу. Я не должен быть в состоянии вставить Id в Class2
таблицу, если ее эквивалент еще не вставлен в Class1
, но я могу. Кто-нибудь может мне помочь, пожалуйста?
Если я поменяю имя Class2's Id
на другое, например, Class1Id
как это:
public class Class2
{
public int Id { get; set; }
[ForeignKey("Class1")]
public int Class1Id { get; set; }
public int? X { get; set; }
public int? Y { get; set; }
public virtual Entity Entity { get; set; }
}
Я получаю следующую ошибку:
Кратность недопустима в роли Class1_Class2_Target в
отношения "Class1_Class2". Поскольку свойства зависимой роли
не ключевые свойства, верхняя граница кратности
Зависимая роль должна быть '*'.