次のようにアプリケーションを構築しています。
データベースにはテーブルが 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