Недопустимое имя столбца EF Core (внешние ключи) - PullRequest
0 голосов
/ 27 марта 2019

Я использую EF Core 2.2 Код с ошибкой

var ClientCase= _context.Client_Cases.Include(a=>a.Case_Sessions). FirstOrDefault(x => x.Id == id);

Ошибка

System.Data.SqlClient.SqlException: 'Неверное имя столбца 'Client_CaseId. Неверное имя столбца 'Case_LevelId'. Неверный столбец имя 'Client_CaseId'. Неверное имя столбца 'Court_CircleId'. Недействительным имя столбца 'Court_HallId'. '

Сущность

1 - Parent Client_Case

public class Client_Cases
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }        
    public string Opponent { get; set; }
    public DateTime? StartDate { get; set; }
    public DateTime Recieve_Date { get; set; }
    [ForeignKey("Clients")]
    public long? ClientID { get;set;}
    public Clients Client { get; set; }
    [ForeignKey("Case_Levels")]
    public long? LevelID { get; set; }
    public virtual Case_Levels Case_Levels { get; set; }
    [ForeignKey("Case_Types")]
    public long? TypeID { get; set; }
    public virtual Case_Types Case_Types { get; set; }
    [ForeignKey("Court_Circles")]
    public long? CircleID { get; set; }
    public virtual Court_Circles Court_Circles { get; set; }
    [ForeignKey("Court_Halls")]
    public long? HallID { get; set; }
    public virtual Court_Halls Court_Halls { get; set; }
    [ForeignKey("Courts")]
    public long? CourtID { get; set; }
    public virtual Courts Court { get; set; }
    [ForeignKey("Case_Status")]
    public long? StatusID { get; set; }
    public Case_Status Case_Status { get; set; }
    [ForeignKey("Lawyers")]
    public long? LawyerID { get; set; }
    public virtual LawyersData Lawyers { get; set; }
    public string Description { get; set; }
    public string Code { get; set; }
    public string CaseNo { get; set; }
    public List<Case_Sessions> Case_Sessions { get; set; }
}

Detail Entity Case_Session

public class Case_Sessions
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }        
    [ForeignKey("Client_Cases")]
    public long? CaseID { get;set;}
    public Client_Cases Client_Case { get; set; }
    [ForeignKey("Case_Levels")]
    public long? LevelID { get; set; }
    public Case_Levels Case_Level { get; set; }
    [ForeignKey("Court_Circles")]
    public long? CircleID { get; set; }
    public Court_Circles Court_Circle { get; set; }
    [ForeignKey("Court_Halls")]
    public long? HallID { get; set; }
    public Court_Halls Court_Hall { get; set; }
    [ForeignKey("Case_Status")]
    public long? StatusID { get; set; }
    public Case_Status Case_Status { get; set; }
    public DateTime Session_Date { get; set; }
    public string Judge_Name { get; set; }
    public string Session_Result { get; set; }
    public string Notes { get; set; }
}

если я получу родителя без включения ребенка, это сработает если я получу детали, это работает

Мне известна ошибка, что EF Core создает собственное соглашение об именах для внешних ключей. но я думаю, что тег Foreign Key переопределяет соглашение об именах

Теперь, где я не прав?

Спасибо

1 Ответ

2 голосов
/ 27 марта 2019

[ForeignKey ("")] Имеется в виду?Назовите свойство, которое вы добавили в класс, чтобы стать внешним ключом.Например:

public long? CaseID { get;set;}
[ForeignKey("CaseID")]
public Client_Cases Client_Case { get; set; }

public long? CircleID { get; set; }
[ForeignKey("CircleID")]
public Court_Circles Court_Circle { get; set; }

Вы можете использовать аннотации, как указано выше. В вашем случае необходимо внести следующие исправления:

[ForeignKey("Client")] // it should be [ForeignKey("Client")] not an extra s if you using entities name in annotation.
    public long? ClientID { get;set;}
    public Clients Client { get; set; }

Это должны быть ваши отношения с адвокатом:

[ForeignKey("Lawyers")]
    public long? LawyersID { get; set; }
    public virtual LawyersData Lawyers { get; set; }

Я предполагаю, что тип первичного ключа в таблице LawyersData длинный?.

...