2012-07-25 181 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