Я вхожу в Entity Framework, но я не уверен, что мне не хватает критической точки в подходе, основанном на коде.
Я использую общий шаблон репозитория на основе кода из https://genericunitofworkandrepositories.codeplex.com/ и создал мои объекты.
Но когда я пытаюсь получить доступ или изменить сущность, я сталкиваюсь со следующим:
System.InvalidOperationException: тип объекта Estate не является частью модели для текущего контекста.
Это происходит, когда я пытаюсь получить к нему доступ из своего хранилища:
public virtual void Insert(TEntity entity)
{
((IObjectState)entity).ObjectState = ObjectState.Added;
_dbSet.Attach(entity); // <-- The error occurs here
_context.SyncObjectState(entity);
}
База данных (./SQLEXPRESS) создается просто отлично, но сущности (таблицы) просто не создаются при запуске.
Мне интересно, если мне нужно явно установить сопоставление сущностей? Разве EF не может этого сделать самостоятельно?
Моя сущность:
public class Estate : EntityBase
{
public int EstateId { get; set; }
public string Name { get; set; }
}
Мой контекст таков:
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>();
}
}
Есть ли какая-то конкретная причина, по которой возникает эта ошибка? Я попытался включить миграцию и включить автоматическую миграцию без какой-либо помощи.