两个dbcontext的EF共享类

时间:2018-01-30 17:38:00

标签: entity-framework ef-code-first aspnetboilerplate

我想尝试从两个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。

0 个答案:

没有答案