dbContext с DBSet - PullRequest
       41

dbContext с DBSet

0 голосов
/ 09 октября 2018

У меня есть следующий сильно упрощенный код, который можно попробовать с помощью интерфейса в наборе БД (см. Ниже).

Когда я удаляю из контекста DBSet с интерфейсом и запускаю,

  var r =  locaDatabase.Entities.First(); ---- WORKS AS EXPECTED

Однако, когда я добавляю интерфейс DBSet в контекст, как показано ниже.Это не скомпилируется.Выдает ошибку, утверждающую, что приведение из DbSet в (DbSet) EntityAddresses невозможно.

CS0030: Невозможно преобразовать тип из ... в ....

Я тщательно искалпереполнение стека для ответов и перепробовал так много вещей, ни одна не сработала..Cast, Set, more и т.д ....

Кажется, есть более фундаментальная проблема, даже если это возможно.

Общая картина такова.Я хочу создать интерфейс для моего контекста, создать интерфейсы для моих сущностей, а затем иметь сборку, содержащую приложение (которое ссылается на EF Core), использующее интерфейс контекста и сущности в качестве интерфейсов.

Я знаю, что это действительно упрощенный код, но приложение работает.Пока я не начну преобразовывать его в использование интерфейсов.Примечание: у меня тоже есть интерфейс для моего контекста, но я еще не начал тестировать его, я хотел начать с простой попытки сначала использовать интерфейсы сущностей, а затем перейти к более подробным материалам.

Спасибо

    public class LocalSQLiteDatabaseDbContext : DbContext
    {

     public virtual DbSet<EntityAddress> EntityAddresses
     {
        get;

        set;
     }

     public virtual DbSet<IEntityAddress> EntityAddresses
     {
        get
          {
           return (DbSet<IEntityAddress>)EntityAddresses;
          }


        set 
          {
           .....
          }

       ...... the rest.....

     }// End class

    public class EntityAddress : IEntityAddress, INotifyPropertyChanging, INotifyPropertyChanged 
    {

         private long _EntityAddressID;

         private string _Street;

        ...... the rest.....

    } // End class


    public interface IEntityAddress
    {

      long EntityAddressID { get; set; }

      string Street { get; set; }

      ...... the rest.....

    } // End interface
...