Конфигурирование отношений между не-PK столбцами в EF Core, ориентированном на базу данных - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь настроить отношения между сущностями в 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.

Основной вопрос заключается в том, можно ли настроить отношения, когда ни одна из основных или зависимых сущностей не связывается на ПК.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...