Мне нужно установить уникальное ограничение на несколько свойств объекта EF. Одним из таких свойств является объектом (навигация собственности)Уникальное ограничение на свойство навигации
public class foo
{
[Key]
public int FooID {get; set;}
<other properties here>
}
public class bar
{
[Key]
public int barID {get;set;}
[Index("IX_UniqueWithinFoo", 0, IsUnique = true)]
public virtual foo parent {get;set;}
[Index("IX_UniqueWithinFoo", 1, IsUnique = true)]
public int order {get; set;}
}
я не могу найти какую-либо документацию, чтобы определить, является ли это правильный подход, тем более, что при вставке foo
объекты не будут приравнивать.
Таким образом, в сущности, единственный способ решить эту проблему, чтобы добавить ключевое свойство иностранного? Я вижу, как это работает, но это кажется немного грязным. Я посмотрю, есть ли у кого-то более чистое решение, прежде чем тикать как ответ, но спасибо за ответ! –
Есть также 2 других способа. Первый - создать индекс с миграцией кода (мне это действительно не нравится). Второй (не совсем новый способ, просто способ сделать решение выше немного чище) состоит в том, чтобы сделать свойство parent_FooId частным, а затем отобразить его с помощью свободного интерфейса (он должен быть внутренним классом внутри бара). По крайней мере, пользователи Bar не видят parent_FooId prop ... – bubi