Я работаю над созданием пользовательского модуля в Orchard CMS, и у меня есть следующее действие контроллера:
public ActionResult Inventory()
{
var models = _repository.Get<MyModel>();
return View(new MyViewModel() { MyModels = models.ToList() });
}
Теперь, когда Orchard строит это, возникает исключение, потому что NHibernate поднял MyModelпотому что он рассматривается как PartRecord, и я не хочу, чтобы это было.
Исключение составляет метод get_Id, который должен быть 'public / protected virtual' или 'protected internal virtual'.
Я могу добавить виртуальные свойства, но я хочу, чтобы NHibernate не участвовал в просмотре этого объекта, это не нужно.
Мой вопрос: как я могу добавить модель, получить доступ к этой модели в виде и запретить Орчарду рассматривать ее как PartRecord?Я фактически использую модель в отдельном репозитории, отдельном от БД Orchard.
РЕДАКТИРОВАТЬ: Дополнительная информация
_repository - это IDbRepository, указывая на мой собственный экземпляр БД. MyModel - это POCO для моих данных.,Я стараюсь не использовать виртуальные свойства в MyModel, они у меня есть здесь, чтобы проиллюстрировать, где я пытаюсь их избежать.
public interface IDbRepository : IDependency
{
T Find<T>(long id) where T : class, IActiveRecord;
bool Update<T>(T record) where T : class, IActiveRecord;
bool Remove<T>(T record) where T : class, IActiveRecord;
}
public class MyModel : IActiveRecord
{
[Key]
public virtual long Id { get; set; }
public virtual int SupplierProductId { get; set; }
public virtual int SupplierId { get; set; }
public virtual int ProductId { get; set; }
}
В дополнение к этому, у моего модуля есть настройкисозданная мной часть хранится в Orchard DB и редактируется в настройках сайта.Я использую обработчик для управления этим.Однако я попытался удалить обработчик и несколько других вещей, чтобы Орчард не смог перенести мой объект в NHibernate.