Как создать уникальный индекс на нескольких вложенных свойствах объекта?C#

Место общения программистов C#
Ответить
Anonymous
 Как создать уникальный индекс на нескольких вложенных свойствах объекта?

Сообщение Anonymous »

У меня есть объект с этой структурой: < /p>

Код: Выделить всё

public class Order
{
public Guid Id { get; set; }
public DateTime createdAt { get; set; }
public int Priority { get; set; }
public Customer Customer { get; set; }
public Vendor Vendor { get; set; }
}

public class Customer
{
public string Name { get; set; }
public string Phone { get; set; }
}

public class Vendor
{
public string Name { get; set; }
public string Phone { get; set; }
}
Я использую hownsone () , чтобы связать эти значения объекта с объектом Order . Теперь мне нужно создать уникальный индекс на основе vendor.name , customer.name и order.priority .
Я попробовал это решение:
order.HasIndex("VendorName", "CustomerName", "Priority").IsUnique()
< /code>
Но, несмотря на то, что я указываю тип всех столбцов, я получаю эту ошибку в создании миграции: < /p>

Свойство «поставка» не может быть добавлено в тип «Заказ», потому что не было указано тип свойства, и нет соответствующего свойства CLR или поля. Чтобы добавить свойство теневого состояния, должен быть указан тип свойства.order.HasIndex(x => new
{
x.Vendor.Name,
x.Customer.Name
x.Priority
}).IsUnique();
< /code>
Процесс создания миграции повышает эту ошибку: < /p>

Выражение 'x => new f__anonypepe1`3 (vendorname = x.vendor.name, customername = x.customer.name, priory = x.prior. Выражение должно представлять собой простое свойство или доступ к полету: 't => t.myproperty'. При указании нескольких свойств или полей используйте анонимный тип: 't => new {t.myproperty, t.myfield}'. (Параметр 'MemanAccessExpression')

Как я могу создать такой индекс, используя модель Builder в EF Core 7 и .net Core?

Подробнее здесь: https://stackoverflow.com/questions/797 ... t-property
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»