2012-12-16 61 views

回答

2

NHibernate的預測是你正在尋找的功能:

var projections = Projections.ProjectionList(); 
projections 
    .Add(Projections.Property("EntityId")) 
    .Add(Projections.Property("Code")) 
    .Add(Projections.Constant(0), "ID"); // const projection 

var list = session 
    .CreateCriteria<MyEntity>() 
    .SetProjection(projections) // projections 
    .SetResultTransformer(new AliasToBeanResultTransformer(typeof(MyEntity))) 
    .List<MyEntity>(); 

前兩個(ENTITYID,代碼)表示映射性能。最後投影「ID」是常量,其可以被設置爲映射映射的屬性「ID」 ...... MyEntity

+0

我的問題是有點不同的:Id字段是我的鑰匙。我正在做兩個表(一對多)之間的外連接,並且此Id是關鍵列。現在,我需要將id字段設爲零值。例如:SELECT 0作爲ID從XYZ左外部連接ZZZ打開XYZ.ID = ZZZ.ID – user1894419

+0

不要誤解我的意思,但你想做什麼?上面的SQL語句將返回一個列ID,其行數與XYZ表rowcount的行數一樣多。順便說一句,我的答案仍然適用於...只有一個'Projections.Constant(0),「ID」) ' –

+0

如果你這樣做,你會得到兩列 - 原始ID之一(因爲我們需要做一個左外連接的標準 - UnitOfWork.Session.CreateCriteria ().CreateAlias(「ZZZ」,「zzz」 ,JoinType.LeftOuterJoin))和一個包含0值的列。然而,我需要原始編號與零值... – user1894419