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

哦,非常感謝。你的解決方案就像一個魅力。你真的救了我的一天。 –