1

这是我DivorceCases.cs的内容文件里面型号:EF6外键冲突

public class DivorceCases 
{ 
    public string case_id { get; set; } 
    public virtual Transactions t { get; set; } 
} 
public class DivorceCasesContext : DbContext 
{ 
    public DivorceCasesContext() : base("mssqlDB") { } 
    public DbSet<DivorceCases> DivorceCase { get; set; } 
} 

这是我CorporationCases.cs的内容文件里面型号:

public class CorporationCases 
{ 
    public string case_id { get; set; } 
    public virtual Transactions t { get; set; } 
} 
public class CorporationCasesContext : DbContext 
{ 
    public CorporationCasesContext() : base("mssqlDB") { } 
    public DbSet<CorporationCases> CorporationCase { get; set; } 
} 

现在我的问题是:

我使用代码优先的方法让EF6自动为我创建表。

当我尝试创建并使用表的任何实例时,EF6也为DivorceCases Model和Context对创建它。但DivorceCases表创建后,我尝试创建和使用CorporationCases示范实例,然后EF6无法自动创建该表对我来说,因为

“交易”表已经被DivorceCases环境中创建

那么我该如何解决这个问题呢?

回答

1

您不需要在这里创建2 dbContext.just使用一个如下所示。

重要说明:您不是遵循基本的命名约定。我强烈建议使用这些约定。

一个地方是在这里:public DbSet<DivorceCases> DivorceCase { get; set; }

需要加以纠正为public DbSet<DivorceCase> DivorceCases { get; set; }

使用一个的DbContext:

public class DivorceCases 
{ 
    public string case_id { get; set; } 
    public virtual Transactions t { get; set; } 
} 

public class CorporationCases 
{ 
    public string case_id { get; set; } 
    public virtual Transactions t { get; set; } 
} 

public class YourCasesContext : DbContext 
{ 
    public YourCasesContext() : base("mssqlDB") { } 

    public DbSet<DivorceCases> DivorceCase { get; set; } 
    public DbSet<CorporationCases> CorporationCase { get; set; } 
} 
+0

难道我已经做错了所有的时间,只是一个DbContext足够用于多个表的整个项目? –

+0

是的,完全没有问题。您可以使用1'dbContext'来处理任意数量的表。 – Sampath

+1

哦,非常感谢。你的解决方案就像一个魅力。你真的救了我的一天。 –