Давайте посмотрим на следующий пример:
public class Blog
{
public int Id { get; set; }
public string Name { get; set; }
public Client Client { get; set; }
}
public class Client
{
public int Id { get; set; }
public string Name { get; set; }
}
У меня есть следующая часть конфигурации объекта:
builder.OwnsOne(x => x.Client, client =>
{
client.Property(x => x.Id).IsRequired(false);
client.Property(x => x.Name).IsRequired(false);
});
Если мы применим миграцию к БД, мы увидим одинтаблица Blogs
со столбцом Client_Id
.
Теперь я хочу создать индекс для этого столбца. Я добавил следующую строку в конфигурацию объекта.
builder.HasIndex(x => x.Client.Id);
И если вы пытаетесь создать миграцию, вы увидите следующую ошибку:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.ArgumentException: The properties expression 'x => Convert(x.Client.Id, Object)' is not valid.
The expression should represent a simple property access: 't => t.MyProperty'.
When specifying multiple properties use an anonymous type: 't => new { t.MyProperty1, t.MyProperty2 }'.
Возможно ли создатьиндекс с использованием конфигурации объекта?