У меня возникают некоторые проблемы при запросе данных, когда первичный ключ является объектом значения.
При попытке выполнить запрос по первичному ключу, используя 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, и преобразование выполняется в памяти для всего набора результатов.