![](/img/trans.png)
[英]Binding to a DropDownList in a ASP.NET MVC4 using Nhibernate
[英]Not an association in nHibernate criteria (Asp.Net MVC4)
我正在使用以下代碼從表tMenu獲取數據。 但它返回錯誤“不是關聯:MenuID”
public virtual IList<FOSEntities.Menu> GetMenuByRole(string RoleID)
{
try
{
ICriteria criteria = nHibernateHelper.OpenSession().CreateCriteria(typeof(FOSEntities.MenuSecurity), "MenuSecurity");
criteria.CreateAlias("MenuSecurity.MenuID", "Menu", NHibernate.SqlCommand.JoinType.InnerJoin);
criteria.CreateAlias("MenuSecurity.RoleID", "Roles", NHibernate.SqlCommand.JoinType.InnerJoin);
criteria.Add(Restrictions.Eq("Roles.RolesID", RoleID));
criteria.SetProjection(new IProjection[] { Projections.ProjectionList()
.Add(Projections.Property("Menu.MenuID"), "MenuID")
.Add(Projections.Property("Menu.MenuName"), "MenuName")
});
IList<Menu> menu = criteria.List<FOSEntities.Menu>();
return menu;
}
catch (Exception ex)
{
throw ex;
}
}
請幫幫我..
語句criteria.CreateAlias("MenuSecurity.MenuID", ...)
似乎(由於通用的命名約定)加入了int
屬性MenuID
。 而這不是NHibernate透視的關系/關聯如何工作的方式。
我們需要具有C#實體屬性
public virtual Menu Menu { get; set; }
public virtual Role Role { get; set; }
// instead of
// public virtual int MenuID { get; set; }
// public virtual int RoleID { get; set; }
然后像這樣加入他們:
criteria.CreateAlias("MenuSecurity.Menu", "Menu" , NHibernate.SqlCommand.JoinType.InnerJoin);
criteria.CreateAlias("MenuSecurity.Role", "Roles", NHibernate.SqlCommand.JoinType.InnerJoin);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.