Entity Framework Core 2.2 запрос по первичному ключу, который является объектом значения - PullRequest
0 голосов
/ 30 декабря 2018

У меня возникают некоторые проблемы при запросе данных, когда первичный ключ является объектом значения.

При попытке выполнить запрос по первичному ключу, используя Find или FindAsync, я всегда получаю null,Является ли это известной проблемой / ограничением?

Пример:

public class UserId : ValueObject
{
    private UserId(Guid id)
    {
        Guard.Against.DefaultOrNull(id, nameof(id));
        Id = id;
    }

    public Guid Id { get; }
    ...
}

public class User : IAggregateRoot
{
    public UserId Id { get; private set; }
    public string Name { get; private set; }
    ....
}

/// EF Core entity configuration
builder.HasKey(a => a.Id);
builder.Property(a => a.Id).HasConversion(
    id => id.Id,
    guid => UserId.Create(guid)
);

Выполнение запроса:

var userId = new UserId(guid);
dbContext.Users.Find(userId);

PS Кажется, есть еще один недостаток при использовании преобразования значения со значениемобъекта и выполнения запроса к нему таким образом, что при использовании предиката он не может отобразиться на SQL, и преобразование выполняется в памяти для всего набора результатов.

...