1

次のようにアプリケーションを構築しています。

データベースにはテーブルが 1 つだけあり、ドメインはベース エンティティ (Ipage) として一般に表示されるときの html ページを表します。ページ、管理ビューを構築するために必要な情報を含むエンティティ (IPageBuilder) を継承します。コンセプトは、管理者側でページを事前にレンダリングし、すべてを 1 つのテーブルに格納することです。以下は、これら 2 つのエンティティのインターフェイス クラスです。

public interface IPage
{
    string BodyPreRender { get; set; }
    string ExcerptPreRender { get; set; }
    int ID { get; set; }
    bool IsPublished { get; set; }
    string Key { get; set; }
    string MetaTagsPreRender { get; set; }
    int Order { get; set; }
    string PageKey { get; set; }
}

public interface IPageBuild : IPage
{
    string Author { get; set; }
    string CreatedBy { get; set; }
    DateTime CreatedOn { get; set; }
    string Description { get; set; }
    string EditListItemPreRender { get; set; }
    string Html { get; set; }
    string Keywords { get; set; }
    string Language { get; set; }
    string MetaDescription { get; set; }
    DateTime? ReleasedOn { get; set; }
    string Title { get; set; }
    int Version { get; set; }
}

プラグイン記述子インターフェイスを含む dll を検出し、アプリケーションで使用するプラグインのリストを作成するプラグイン マネージャーを作成しました。プラグ記述子インターフェイスは次のとおりです。

internal interface IPluginDescriptor
{
    Assembly Assembly { get; }
    string Author { get; }
    string AuthorUrl { get; }
    Type DomainType { get; }
    PlugInFactories Factories { get; }
    void Install();
    string Key { get; }
    string MenuName { get; }
    string Name { get; }
    string PageKey { get; }
    PluginRoute Route { get; }
    string SupportUrl { get; }
    void Uninstall();
    Version Version { get; }
}

私がやりたいことは、プラグイン内にドメイン オブジェクトを作成することです。これは、基本ページ ビルダー クラスに基づいており、プラグインが次のような必要な Web ページを作成および保存できるようにします。

public class Foo : IPageBuild
{
    public string FooInfo { get; set; }
}

アプリケーションの起動時に、プラグイン記述子でメソッドを実行し、それを install() と呼びます。これにより、データ テーブルがチェックされ、FooInfo の列があるかどうかが確認されます。では、このタスクを達成するための最良の方法は何ですか? 前もって感謝します。

さらに、テーブルの列を次のようにフォーマットするように設定しました。

  • Page_BodyPreRender、
  • Page_ExcerptPreRender、
  • 等。、
  • Foo_FooInfo

私は使っている

  • .Net フレームワーク 4.0
  • エンティティ フレームワーク 4.3.1.0
  • System.Data.SqlServerCe.Entity4.0.0.0
  • System.Web.Mvc 3.0.0.0
4

1 に答える 1

0

この質問をしてからしばらく経ちましたので、自分で答えてみようと思いました。基本的に、問題を解決するために NHibernate に移行しました。

于 2012-09-04T07:55:42.833 に答える