2012-07-25 4 views
1

Я создаю приложение следующим образом;MVC Plugin Architecture и Entityframework

В базе данных есть только одна таблица и домен как базовый объект (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

Я с использованием

  • .Net Framework 4.0
  • Entity Framework 4.3.1.0
  • System.Data.SqlServerCe.Entity4.0.0.0
  • System.Web.Mvc 3.0.0.0

ответ

0

Некоторое время прошло поскольку я задал этот вопрос, поэтому я подумал, что попытаюсь ответить на него сам. В основном я перешел на NHibernate, чтобы решить проблему.

+0

Рассмотрите принятие этого как ответ, который сработал лучше всего для вас. Таким образом, все знают, что ваша проблема решена. – Marijn