我有兩個簡單的對象A和B.對象A具有參考對象B.NHibernate的 - 從引用列選擇ID沒有加入
public class A
{
public virtual Guid AId { get; set; }
public virtual string Name { get; set; }
public virtual B BObject { get; set; }
}
public class B
{
public virtual Guid BId { get; set; }
public virtual string Name { get; set; }
}
我映射這兩個對象與流利,NHibernate的:
public class AMap : ClassMap<A>
{
public AMap()
{
Id(x => x.AId);
Map(x => x.Name);
References<B>(x => x.BObject);
}
}
public class BMap : ClassMap<B>
{
public BMap()
{
Id(x => x.BId);
Map(x => x.Name);
}
}
創建數據庫後,我得到兩個表。 A的表格有一個額外的列'BObject_id'。
我有一個特殊的情況,我只需要選擇引用的對象B的ID。 我使用LINQ來選擇它。
var test = session.Query<A>().Select(x => x.BObject.BId);
這產生SQL查詢(我使用MSSQL2012):
select b1_.BId as col_0_0_ from iadb.[A] a0_ left outer join iadb.[B] b1_ on a0_.BObject_id=b1_.BId
休眠連接第一兩個表,然後選擇B的鍵列
我的問題是:
是否可以只從表A中選擇'BOject_id'列的值?
我想避免在這種特殊情況下的連接,並在其他情況下使用引用的好處。