Условные навигационные свойства в EF Core - PullRequest
0 голосов
/ 27 октября 2019

У меня есть таблица User с соответствующей таблицей UserAudits, которая отслеживает изменения. Тип операции хранится в таблице аудита (вставка, обновление, удаление).

Я хочу создать свойство навигации для моей сущности User, чтобы я мог извлечь "вставленную" запись из таблицы аудита. Это возможно? Обычно при настройке свойства навигации невозможно указать дополнительные условия для объединения.

Пользователь:

public class User
{
    public int Id {get; set;}
    public string Name {get;set;}
    public UserAudit InsertedAuditRecord {get; set;} // <-- How to configure this?
}

UserAudit:

public class UserAudit
{
    public int AuditId {get; set;
    public int Id {get; set;}
    public string Name {get; set;}
    public string OperationType {get; set;}
}

Я знаю, что яможет создать свойство навигации «один ко многим» в моей сущности «Пользователь», а затем запросить следующее:

ICollection<UserAudit> UserAudits {get; set;}
UserAudit InsertedAuditRecord => UserAudits.First(ua => ua.OperationType = "insert");

Но для этого потребуется перенести всю таблицу аудита для пользователя в память, чтобы найти только одну запись.

Конечно, есть какой-нибудь способ сделать это?

1 Ответ

0 голосов
/ 28 октября 2019

A Where (First) в дочерней записи не возвращает весь дочерний объект.

...