2

私は現在、高度にモジュール化する必要がある MVC プロジェクトに取り組んでいます。たとえば、ユーザー モジュール、メニュー モジュール、およびページ モジュールが必要です。

モジュールはさまざまなビジュアル スタジオ ソリューションで高度に再利用できる必要があるため、モジュールごとに個別のプロジェクトを作成します。

データベース マッピングには、エンティティ フレームワークを利用したいと考えています。各モジュール プロジェクトに個別の DbContext を作成しました。各 DbContext には、モジュールに関連付けられたエンティティが含まれています。

残念ながら、異なるモジュール/dbContext 内のエンティティ間で EF に外部キーを作成させることはできません。

例: コア モジュールにはユーザー エンティティが含まれます ページ モジュールには、コア モジュール dbContext で定義されたユーザー エンティティにリンクする作成者を持つページ エンティティが含まれます。

モジュール/dbContext間で外部キーを作成する方法を知っている人はいますか?

4

1 に答える 1

2

すべてのエンティティは同じデータベースにありますか? 次のようにアセンブリを分離することをお勧めします。

データ- Entity Framework モデルおよび/またはクラス/エンティティ定義を含むプロジェクト (使用している EF アプローチの種類によって異なります)。

サービス- データを操作するインターフェイスとクラスを含むプロジェクト。たとえば、ユーザー エンティティ (および関連アイテム) の場合、次のようになります。

public interface IUser : IDisposable
{
    Data.User Get(int userId);
    IQueryable<Data.User> GetAll();
    //other method definitions for User entity CRUD
}

次に、実装します。

public class User : IUser
{
    private readonly DataEntities _dataContext = new DataEntities(); //this is from your EF Data assembly

    public Data.User Get(int userId)
    {
        return _dataContext.Users.FirstOrDefault(u => u.UserId == userId);
    }

    public IQueryable<Data.User> GetAll() 
    {
        return _dataContext.Users;
    }

    //other method implementations

    public void Dispose()
    {
        _dataContext.Dispose();
    }
}

次に、モジュール プロジェクトでServiceDataアセンブリの両方を参照します。

于 2014-03-07T14:43:55.170 に答える