Tôi đang tham gia vào Entity Framework, nhưng tôi không chắc liệu tôi có thiếu một điểm quan trọng trong cách tiếp cận mã đầu tiên hay không.
Tôi đang sử dụng một mẫu kho lưu trữ chung dựa trên mã từ https://genericunitofworkandrepos khu.codeplex.com/ và đã tạo ra các thực thể của tôi.
Nhưng khi tôi cố gắng truy cập hoặc sửa đổi thực thể tôi gặp phải như sau:
System.InvalidOperationException: Kiểu thực thể động sản không phải là một phần của mô hình cho bối cảnh hiện tại.
Nó xảy ra khi tôi đang cố truy cập nó từ kho lưu trữ của mình:
public virtual void Insert(TEntity entity)
{
((IObjectState)entity).ObjectState = ObjectState.Added;
_dbSet.Attach(entity); // <-- The error occurs here
_context.SyncObjectState(entity);
}
Cơ sở dữ liệu (./SQLEXPRESS) được tạo tốt, nhưng các thực thể (bảng) không được tạo khi khởi động.
Tôi tự hỏi nếu tôi cần thiết lập rõ ràng ánh xạ của các thực thể? Là EF không thể tự điều này?
Thực thể của tôi là:
public class Estate : EntityBase
{
public int EstateId { get; set; }
public string Name { get; set; }
}
Bối cảnh của tôi là như vậy:
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>();
}
}
Có bất kỳ lý do cụ thể tại sao lỗi này xảy ra? Tôi đã thử kích hoạt di chuyển và cho phép di chuyển tự động mà không cần bất kỳ trợ giúp.