我想尝试从两个dbcontext共享一个类(例如用户)。
这个想法是第一个dbcontext有所有方法与用户一起工作(添加/删除/更新/等)第二个dbcontext只需要访问(读取用户数据)。
为此,我创建了一个类抽象用户,我将此类添加到db上下文中,因此问题在于为第一个dbcontext和第二个创建迁移时。
在我的第一部分中,我希望在第二部分中跟踪POCO用户类的更改,我不想跟踪/创建表。
我尝试在OnModelCreating上使用Ingore,但是这样代码首先不创建迁移但dbcontext没有正确的模型创建,我无法对表db进行操作(我使用此approch建议EF Data Pints
- 更新 -
[Table("User")]
public abstract class BaseUser {
[Key]
public virtual int Id {get;set;}
public virtual string Name {get;set;}
}
//DB context 1
public class OUser : BaseUser{
}
public class oneDbContext : DbContext
{
public virtual IDbSet<OUser> OneUsers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
....
}
//DB context 2
public class MUser : BaseUser{
}
public class twoDbContext : DbContext
{
public virtual IDbSet<MUser> TwoUsers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Ignore<MUser>();
}
所以现在如果我首先使用Add-Migration和modelBuider调用代码.Ingore表User不会出现在脚本中但是当我尝试通过db context访问表时我会发现错误
The entity type Muser is not part of the model for the current context.
但是,如果我取消对ingore的注释,对表的访问工作正常,但模型尝试添加表User。