2016-10-03 8 views
0

dllにdbContextを持ち、別のプロジェクトにインポートし、新しいモデル/エンティティ/テーブルをプログラムで追加して既存のテーブルと結合できますか?エンティティフレームワークで実行時に既存のコンテキストに新しいモデルを追加する

私はなぜこのようなことがほしいのか説明しようとします(もっと良い方法があるかもしれません)。

私はモジュラーアプリを作りたいので、dbContextを持つCore.dllがあります。また、他の人がモジュールを作ってCore dbContextを拡張できるようにしたい。

ありがとうございました。

+0

どのようにあなたのDbContextを作成している - コードまず、デザイナーを経て、等? –

+0

@ JimMcKeon、私はデータベース(データベースから)を作成していますが、私が望むものを有効にしていればそれを作成しても構いません。 – mattinsalto

答えて

1

私が正しく理解していれば、基本的にEFが何をしているかのように思えます。最初にコードを使用してこれを行うには、少なくとも2つの方法があります。私はEntityTypeConfigurationアプローチ(流暢なAPIではなく)を使用してオブジェクトモデルを構築するのが好きです。あなたのケースでは、それはこのようになります。

using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration; 
using CoreNamespace; 

namespace CoreNamespace 
{ 
    public class MyDbContext:DbContext 
    { 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 
     } 
     modelBuilder.Configurations.Add(new CoreEntityConfiguration()); 
    } 
} 

public class CoreEntity 
{ 
    //list properties, methods, etc 
} 

public class CoreEntityConfiguration : EntityTypeConfiguration<CoreEntity> 
{ 
    public CoreEntityConfiguration() 
    { 
     //configure entity and map to db 
    } 
} 

namespace ExtendingProjectNamespace 
{ 
    public class MyExtendedDbContext : MyDbContext 
    { 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 
      modelBuilder.Configurations.Add(new SubEntityConfiguration()); 
     } 
    } 

    public class SubEntity 
    { 
     //list properties, methods, etc 
    } 

    public class SubEntityConfiguration : EntityTypeConfiguration<SubEntity> 
    { 
     public SubEntityConfiguration() 
     { 
      //configure entity and map to db 
     } 
    } 
} 

ここに名前空間が別々のプロジェクト/のDLLを参照するように意図されている

+0

私は正しい方向に向いてくれてありがとうございます。 – mattinsalto

関連する問題