Я пытаюсь настроить отношения между сущностями в EF Core 6, используя существующую базу данных в качестве отправной точки.Я сталкиваюсь с проблемами, когда соединения между таблицами не находятся между столбцами первичного ключа.Я автоматически создавал классы C #, поэтому могут быть проблемы, вызванные переименованием и отображением столбцов именования, из-за которых я точно не знаю, где теряюсь.
Например, я определяю отношения междуСотрудники и поездки, которые они предприняли.Соответствующие таблицы / столбцы в SQL Server выглядят следующим образом:
trips
trip_id (PK)
trip_employee_id
...
employees
employee_key (PK)
valid_date
invalid_date
employee_id
...
Следует отметить, что employee_id на самом деле не является уникальным идентификатором внутри сотрудников, а комбинация employee_id + invalid_date = NULL.Таким образом, следующий запрос будет объединением между ними, при условии, что нам нужна самая актуальная информация о соответствующем сотруднике:
SELECT *
FROM dbo.trips t
INNER JOIN dbo.employees e
ON t.trip_employee_id = e.employee_id
AND e.invalid_date = NULL
Я использую DataAnnotations столько, сколько могу, поэтому мой C #классы выглядят следующим образом:
namespace Models
{
[Table("trips")]
public partial class Trip
{
[Column("trip_id")]
[Key]
public int TripId { get; set; }
[Column("trip_employee_id")]
public string TripEmployeeId { get; set; }
// Other columns below
}
[Table("employees")]
public partial class Employee
{
[Column("employee_key")]
[Key]
public int EmployeeKey { get; set; }
[Column("valid_date", TypeName = "datetime")]
public DateTime ValidDate { get; set; }
[Column("invalid_date", TypeName = "datetime")]
public DateTime? InvalidDate { get; set; }
[Column("employee_id")]
public string EmployeeId { get; set; }
// Other columns below
}
}
Есть ли способ сделать это в EF Core, с аннотациями DataAnnotations или без них?И автоматическая фильтрация по invalid_date также не нужна, просто приятно иметь ее, поскольку я предполагаю, что могу настроить отношение 1-Много от поездок к сотрудникам, а затем просто выполнить фильтрацию по сотрудникам, где invalid_date = NULL.
Основной вопрос заключается в том, можно ли настроить отношения, когда ни одна из основных или зависимых сущностей не связывается на ПК.