Я создал проект, который реализует шаблон репозитория и шаблон единицы работы с EF6.
Я пытаюсь сделать так, чтобы я всегда кодировал интерфейс, однако EF не позволяет использовать интерфейсы для свойств навигации.
В этом проекте я сначала использовал код. Созданы мои модельные классы. Пример:
public class Kiosk
{
public int Id { get; set; }
[Required]
[Index(IsUnique = true)]
[StringLength(15)]
public string IpAddress { get; set; }
[Required]
[Index(IsUnique = true)]
[StringLength(50)]
public string Name { get; set; }
[Required]
[DefaultValue(true)]
public bool IsActive { get; set; }
[Required]
public int SiteId { get; set; }
[StringLength(50)]
public string Description { get; set; }
// Navigation Props
public Site Site { get; set; }
}
Затем я создал интерфейс для Kiosk для использования во всем приложении. Я также думал, что свойство навигации должно быть интерфейсом здесь. Итак, я создал интерфейс для Site, и в вышеприведенном классе заменил nav nav на
public ISite Site {get;set;}
Во время компиляции я получаю следующее исключение:
System.InvalidOperationException: 'The navigation property 'Site' is not a declared property on type 'Kiosk'. Verify that it has not been explicitly excluded from the model and that it is a valid navigation property.'
Я использую модели которые были созданы для EF в качестве моделей в моем приложении. Я хотел бы использовать эти модели в качестве интерфейсов. Как тогда я могу создать тестируемое приложение? Что мне здесь не хватает?