簡體   English   中英

MVC插件架構和實體框架

[英]MVC Plugin Architecture and Entityframework

我正在構建一個應用程序,如下所示;

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

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

在應用程序啟動時,我想在插件描述符中運行一個方法,將其稱為install(),它將檢查數據表並查看其是否包含FooInfo列。 那么完成這項任務的最佳方法是什么? 提前致謝。

另外,我將表中的列設置為以下格式:

  • Page_BodyPreRender,
  • Page_ExcerptPreRender,
  • 等等。,
  • Foo_FooInfo

我在用

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

自從我問了這個問題以來已經過去了一段時間,所以我想我會嘗試自己回答。 基本上,我轉向NHibernate來解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM