簡體   English   中英

NHibernate-AliasToBean和關聯

[英]NHibernate - AliasToBean and Associations

我有一個看起來像這樣的實體:

public class MyEntity {
 public virtual int Id { get; set; }
 public virtual string Name { get; set ; }
 public virtual Role UserRole { get; set; }
}

屬性“名稱”不是映射的屬性,而是“ Id”和“ UserRole”。 我想使用這樣的自定義條件填充此類:

ICriteria c = Db.CreateCriteria<MyEntity>("m")
 .CreateAlias("Role", "r")
 .SetProjection(Projections.ProjectionList()
 .Add(
  Projections.SqlProjection(@"Name = case TypeId
                    when 2 then (select Name from tblOne where Id = EntityId)
                    when 4 then (select Name from tblTwo where Id = EntityId)
                    when 3 then (select Name from tblThree where Id = EntityId)
                    end", new string[] { "Name" }, new NHibernate.Type.IType[] { NHibernateUtil.String }))
                .Add(Projections.Property("m.Id"), "Id")
                .Add(Projections.Property("r.Id"), "UserRole.Id")
                .Add(Projections.Property("r.Desc"), "UserRole.Desc")
                .Add(Projections.Property("r.Permission"), "UserRole.Permission")
    )
    .SetResultTransformer(Transformers.AliasToBean<EntityPermission>());

但是,如果執行此操作,它將引發異常“在類'MyEntity'中找不到屬性'{UserRole.Id}'的設置器”。

所以我的問題是,是否沒有aliastobean支持關聯,如果支持,正確的語法是什么?

您應該將別名設置為“ UserRole”而不是“ Role”,因為屬性的名稱為“ UserRole”,而不是“ Role”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM