2016-08-25 11 views
2

私はすでにthis questionを読んでおり、 EFバージョン6では、私が正しく理解している場合、それはMyEntityの両方のバージョンがが同じDbContextを投げた場合にのみ起こるはずですが、これは私のケースではありません。タイプ 'Module1.MyEntity'とタイプ 'Module2.MyEntity'はどちらも同じMyEntityという単純な名前なので、同じモデルでは使用できません

私が持っている:

public class Module1Context : DbContext 
{ 
    public DbSet<Module1.MyEntity> MyEntities { get; set; } 

    ... 
} 

、その後、別のファイルに:

public class Module2Context : DbContext 
{ 
    public DbSet<Module2.MyEntity> MyEntities { get; set; } 

    ... 
} 

私がオンライン見つけたこの問題へのすべての参照は同じ DbContextを使用している人々に起こります。私の質問は、「同じモデル」には使用できないと言うとき、モデルとはどういう意味ですか?それはDbContextではありませんか?もしそうなら、私のコードは正常に動作するべきではありませんか?

+0

リンク先の記事は、ModelFirstまたはDatabaseFirstのプラクティスを使用している場合、同じアプリケーション内のどこでも同じ名前の2つのエンティティで発生すると思われます。 – Eris

+0

"同じアプリケーション"がWeb MVC/APIアプリケーションである場合、DbContextとほぼすべてのライフスパンが要求ごとであるため、問題ではありません。 Module1.MyEntityはMVCコントローラから使用され、Module2.MyEntityはAPIから実際に使用されます。 – slashCoder

+0

これは、EDMXファイルの処理方法が原因と考えられます。指定された唯一の解決策は、非推奨のEDMXの代わりにCodeFirstを使用することです。あなたは頼みになりますか? EDMXはEF-Coreとしてサポートされなくなりました – Eris

答えて

0

正常に動作するはずです。
異なるデータベース(接続)を使用している場合は、問題はありません。
あなたが同じデータベースを使用している場合は、2つの異なるシナリオを持っている:あなたのクラスが同じ性質を持っている場合(または同じクラスで、あなたは2つの異なるシナリオで同じクラスを持つことができます)

  • をあなたが持つことができます2つのクラスの同じテーブルを使用するか、異なるテーブルを指定して別個のエンティティを持つことができます。
  • クラスが異なる場合は、クラスに異なるテーブル名を指定する必要があります。また、クラスに必要なすべての列を持つ単一の表を作成し、マイグレーションを使用不可にすることもできます。
関連する問題