Wchodzę do Entity Framework, ale nie jestem pewien, czy brakuje mi punktu krytycznego w podejściu do kodu.
Używam ogólnego wzorca repozytorium opartego na kodzie z https://genericunitofworkandrepositories.codeplex.com/ i utworzyłem moje jednostki.
Ale kiedy próbuję uzyskać dostęp do podmiotu lub go zmodyfikować, napotykam:
System.InvalidOperationException: Typ jednostki Estate nie jest częścią modelu dla bieżącego kontekstu.
Dzieje się tak, gdy próbuję uzyskać do niego dostęp z mojego repozytorium:
public virtual void Insert(TEntity entity)
{
((IObjectState)entity).ObjectState = ObjectState.Added;
_dbSet.Attach(entity); // <-- The error occurs here
_context.SyncObjectState(entity);
}
Baza danych (./SQLEXPRESS) jest tworzona dobrze, ale jednostki (tabele) po prostu nie są tworzone podczas uruchamiania.
Zastanawiam się, czy muszę jawnie ustawić mapowanie jednostek? Czy EF nie jest w stanie tego zrobić samodzielnie?
Moja jednostka to:
public class Estate : EntityBase
{
public int EstateId { get; set; }
public string Name { get; set; }
}
Mój kontekst jest taki:
public partial class DimensionWebDbContext : DbContextBase // DbContextBase inherits DbContext
{
public DimensionWebDbContext() :
base("DimensionWebContext")
{
Database.SetInitializer<DimensionWebDbContext>(new CreateDatabaseIfNotExists<DimensionWebDbContext>());
Configuration.ProxyCreationEnabled = false;
}
public new IDbSet<T> Set<T>() where T : class
{
return base.Set<T>();
}
}
Czy jest jakiś konkretny powód, dla którego występuje ten błąd? Próbowałem włączyć migracje i włączyć automatyczne migracje bez żadnej pomocy.