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とコンテキストペアも同様に作成します。

「トランザクション」表がすでにDivorceCasesコンテキストによって

を作成されているので、しかし DivorceCases表が作成された後、私は CorporationCasesモデルインスタンスを作成して使用してみてください、その後EF6は自動的に私のためのテーブルの作成に失敗しました

どうすればこの問題を解決できますか?

答えて

1

ここに2 dbContextを作成する必要はありません。次のように1つを使用してください。

重要なお知らせ:あなたは基本的な命名規則に従っていません。それらを使用することを強くお勧めします。

一つの場所はここにある:public DbSet<DivorceCases> DivorceCase { get; set; }

はワンDbContextを使用してpublic DbSet<DivorceCase> DivorceCases { get; set; }

として修正する必要があります:私は間違っているすべての時間をそれをやって、ちょうど1されていたよう

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

ああ、ありがとう。あなたのソリューションは魅力的に機能します。あなたは本当に私の一日を救った。 –