2012-07-25 102 views
1

我正在構建一個應用程序如下;MVC插件架構和實體框架

數據庫和域中只有一個表作爲基本實體(Ipage),它在公衆查看時表示html頁面。繼承該實體(IPageBuilder),其中包含構建頁面所需的信息,即管理視圖。這個概念是預先渲染管理端的頁面,並將所有內容存儲在一張表中。下面是這兩個實體的接口類:

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; } 
} 

我想要做的就是創建一個插件,它是基於基本頁面生成器類中的域對象,從而使插件創建和保存所有網頁它想,如:

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

在應用程序啓動時,我想在我的插件描述符運行的方法,把它安裝(),它會檢查數據表,看看它是否有FooInfo列。那麼完成這項任務的最佳方法是什麼?提前致謝。

此外我已經安裝在表中的列被格式化爲:

  • Page_BodyPreRender,
  • Page_ExcerptPreRender,
  • 等,
  • Foo_FooInfo

我使用

  • 框架4.0
  • 實體框架4.3.1.0
  • System.Data.SqlServerCe.Entity4.0.0.0
  • System.Web.Mvc 3.0.0.0

回答

0

一些時代已經一去不復返了因爲我問了這個問題,所以我想我會試圖自己回答。基本上我轉向NHibernate來解決這個問題。

+0

考慮接受這是最適合你的答案。這樣,每個人都知道你的問題解決了。 – Marijn 2012-09-25 13:58:11