Сначала я запускаю код на основе уже существующей базы данных и получаю ошибку сопоставления.
Я пытался поместить аннотацию внешнего ключа, но безуспешно.
Вот это отображение классов:
[Table("tablle_1")]
public partial class Table1
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Table1()
{
Table2 = new HashSet<Table2>();
}
[Key]
[Column(Order = 0)]
public long usu_id_apr { get; set; }
[Other non-important columns]
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long usu_numweb { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Table2> Table2 { get; set; }
}
[Table("Table2")]
public partial class usu_twebnotifi
{
[Key]
[Column(Order = 0)]
public long usu_id_not { get; set; }
[Other non-important columns]
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long usu_numweb { get; set; }
[StringLength(999)]
public string usu_obsnot { get; set; }
public long? usu_id_apr { get; set; }
public virtual Table1 Table1 { get; set; }
}
А вот и метод OnModelCreation
modelBuilder.Entity<Table1>()
.HasMany(e => e.Table2)
.WithOptional(e => e.Table1)
.HasForeignKey(e => new { e.usu_id_apr, e.usu_numweb });
Когда я запускаю его, я получаю эту ошибку:
Data.Table1_Table2: множественность конфликтует с референтным ограничением в роли «my_foreign_key» в отношении «Table1_Table2». Поскольку все свойства в зависимой роли не имеют значения NULL, кратность основной роли должна быть равна 1.
Table1_Table2_Source_Table1_Table2_Target:: количество свойств в зависимых и главных ролях в ограничении отношений должно быть одинаковым.
Не могли бы вы мне помочь?
Заранее спасибо.