ObjectContext
umożliwia ogólny dostęp do wygenerowanych elementów. DbContext
wydaje się nie mieć takiego wsparcia. Dostęp do EF5 z ogólnym repozytorium stanowi wyzwanie. Powiedzmy, że chcę mechanizm rodzajowy czytać każdą daną jednostkę, nazwać TEntity:Ogólny dostęp do DbContext
public class DataRepositoryEF5<T> where T: DbContext
{
private ObjectContext _context;
public DataRepositoryEF5(DbContext context)
{
_context = ((IObjectContextAdapter)context).ObjectContext;
}
public IEnumerable<TEntity> ReadAll<TEntity>() where TEntity : class,new()
{
return GetObjectSet<TEntity>().AsEnumerable();
}
protected ObjectSet<TEntity> GetObjectSet<TEntity>() where TEntity : class,new()
{
ObjectSet<TEntity> result;
result = _context.CreateObjectSet<TEntity>();
return result;
}
}
Wykorzystanie
var context = new MyContext();
var repository = new DataRepositoryEF5<MyContext>(context);
IEnumerable<Document> results = repository.GetAll<Document>();
foreach (var item in results)
{
Console.WriteLine("{0} {1} {2} {3}", item.Description, item.Id, item.Property, item.Whatever);
}
EF wykorzystywane do generowania klas z typu common bazowym EntityObject
. Jako że nie jest to już sprawa najlepszy Ograniczenie może mam to class
...
Po drugie, ponieważ nie ma odpowiednika ObjectContext.CreateObjectSet<>()
jestem zmuszony do oddania od DbSet
do ObjectSet
.
Przy tym wzorze na miejscu nie potrzebuję DbContext
. Bez leków generycznych jestem zmuszony do zakodowania wszystkich operacji CRUD. Przegapiłem coś? Jeśli nie, czy można powiedzieć EF5, aby wygenerował kod z numerem ObjectContext
?
przyjrzeć się tej końcówki, które napisałem na CodeProject jakiś czas temu http: //www.codeproject.com/Tips/309753/Repository-Pattern-with-Entity-Framework-4-1-and-C –
@MassimilianoPeluso - Tak, ten artykuł jest dokładnie tym, czego potrzebuję! Na twój przykładowy kontekst. Ustaw <>() to nowy sposób na zrobienie tego. Widzę, że jesteś również z ograniczeniem "klasy" w jednostkach. Jeśli chcesz opublikować komentarz jako odpowiedź, udzielę mu odpowiedzi. - –