Слабая связь с инфраструктурой сущностей

Я пытаюсь слабо связать этот код, но я не уверен, как и должен ли я это делать.

Я использую Entity Framework, а DbContext — это унаследованный класс, используемый объектом сущности TMeasure. Когда я запускаю этот код, я получаю эту ошибку:

«System.Data.Entity.DbContext» не содержит определения для «TMeasures», и не может быть найден метод расширения «TMeasures», принимающий первый аргумент типа «System.Data.Entity.DbContext» (вы пропустили директиву использования? или ссылка на сборку?)

Может кто-то помочь мне с этим?

Спасибо!

class MeasureRepository: IMeasureRepository
{
    private DbContext db;

    public MeasureRepository(DbContext db)
    {
        this.db = db;
    }

    public List<TMeasure> GetAll()
    {
        var results = (from i in db.TMeasures
                        orderby i.strMeasure
                        select i).ToList();
        return results;
    }
}

person J Hunt    schedule 28.10.2014    source источник
comment
Я не понимаю, каким образом это можно считать слабосвязанным, оно просто кажется сломанным. Какова ваша конечная цель здесь? Вы хотите написать репозиторий, который работает с любым DbContext, а не с определенным классом, производным от DbContext. Если это так, поищите в Google общий репозиторий, я знаю, что уже публиковал пример в прошлом.   -  person Ben Robinson    schedule 28.10.2014
comment
Мати (ниже) дал мне решение моей проблемы. Очевидно, он был сломан, но я говорю о том, что не нужно создавать экземпляр класса Entity внутри класса. Я бы предпочел передать объект сущности самому классу.   -  person J Hunt    schedule 29.10.2014


Ответы (1)


Вы должны создать свой собственный контекст:

//Internal class recommended
public class MeasuringContext : DbContext
{
     public DbSet<Measure> Measures { get; set; }
}

А затем используйте этот контекст вместо общего:

class MeasureRepository : IMeasureRepository
{
    private MeasuringContext db;

    //...
}
person Matias Cicero    schedule 28.10.2014
comment
Я предполагаю, что это позволит мне изменить контекст, который получает класс MeasureRepository, если это потребуется в будущем? - person J Hunt; 28.10.2014
comment
Если вам нужен общий контекст, то этот вопрос может быть полезен: Универсальный доступ к DbContext - person Matias Cicero; 28.10.2014