Orchard Custom Module – 由NHibernate选择的模型 – 需要虚拟属性
我正在努力在Orchard CMS中构建自定义模块,我有以下控制器操作:
public ActionResult Inventory() { var models = _repository.Get(); return View(new MyViewModel() { MyModels = models.ToList() }); }
现在,当Orchard构建它时,会发生exception,因为NHibernate已经选择了MyModel,因为它被视为PartRecord,我不希望它。
方法get_Id应该是’public / protected virtual’或’protected internal virtual’。
我可以在属性中添加虚拟,但我想避免NHibernate在查看此对象时有任何部分,这是不必要的。
我的问题是,如何添加模型,在视图中访问该模型并禁止Orchard将其视为PartRecord? 实际上,我将该模型用于与Orchard DB分开的独立存储库中。
编辑:附加信息
_repository是一个IDbRepository,指向我自己的数据库实例MyModel是我的数据的POCO。 我正在尝试避免将虚拟放在MyModel中的属性上,我将它们放在这里,以说明我试图避免它们的位置。
public interface IDbRepository : IDependency { T Find(long id) where T : class, IActiveRecord; bool Update(T record) where T : class, IActiveRecord; bool Remove(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中并在站点设置中进行编辑。 我正在使用一个处理程序来控制它。 但是,我已经尝试删除处理程序和其他一些东西,以防止Orchard将我的对象带入NHibernate。
Orchard自动映射配置假定在满足以下条件时将映射任何类:
- 命名空间以“.Models”或“.Records”结尾
- 有一个
Id
属性,带有虚拟访问器 - 这个class既不是封闭的也不是抽象的
- 该类不实现
IContent
或从ContentPartRecord
inheritance
因此,如果你阻止任何这些标准成立,你应该是好的。 例如,在不以.Models
或.Records
结尾的命名空间中定义类应该就足够了。
- 在.NET 4.0中,WebGrid + Paging + Sorting + Filtering中的filter丢失了
- MVC 3路由和操作链接不遵循预期的上下文路由
- 存储/检索动态对象后,从动态对象中检索属性
- 登录页面上的防伪标记
- 使用ModelBinder属性与ModelBinders.Add()
- 在c#中将base64转换为Image
- 如何在通过Html.ValidationSummary()呈现的错误中显示链接等html元素
- 为什么Request.Form.ToString()的返回值与NameValueCollection.ToString()的结果不同
- 如何在重定向,asp.net mvc3之前确保控制器和操作存在