У меня есть следующий сильно упрощенный код, который можно попробовать с помощью интерфейса в наборе БД (см. Ниже).
Когда я удаляю из контекста 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