Linq EF Include () Ошибка: для навигации требуется источник навигации совместимого типа - PullRequest
0 голосов
/ 08 ноября 2019

У меня отложенный контекст загрузки базы данных с отключенной загрузкой. Когда я хочу запросить и материализовать некоторые объекты со следующим кодом:

await context.Files.Include(f => f.Owner).Where(f => ids.Contains(f.Id)).ToListAsync();

, я получаю следующее исключение:

The specified navigation requires a navigation source of a type that is 
compatible with 'Transient.reference[Library.Client]'.
Parameter name: from

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

Это просто проблема со свойством навигации Владелец в контексте отложенной загрузки.

Здесь моя модель настроена:

public class User
{
    public int Id { get; set; }

    [IdColumn(nameof(Client))]
    public int ClientId { get; set; }
    [ForeignKey(nameof(ClientId))]
    public virtual Client Client { get; set; }
}

public class Client : User
{
    // here are the specific client properties listed
}

public class File
{
    public int Id { get; set; }

    [IdColumn(nameof(Owner))]
    public int OwnerId { get; set; }
    [ForeignKey(nameof(OwnerId))]
    public virtual User Owner { get; set; }


    [IdColumn(nameof(Client))]
    public int ClientId { get; set; }
    [ForeignKey(nameof(ClientId))]
    public virtual Client Client { get; set; }
}

public class IdColumnAttribute : ColumnAttribute
{
    public const string IdPostFix = "_Id";

    public IdColumnAttribute() : base() { }
    public IdColumnAttribute(string name) : base(name + IdPostFix) { }
}

Эта проблема возникает не только для Файла, но и для других объектов, связанных с Пользователем.

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