c# – 在Nhibernate QueryOver中使用计算属性(未映射)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 在Nhibernate QueryOver中使用计算属性(未映射),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1600字,纯文字阅读大概需要3分钟。
内容图文
![c# – 在Nhibernate QueryOver中使用计算属性(未映射)](/upload/InfoBanner/zyjiaocheng/796/6f20d2328c6946aeaa02689e527d3b6e.jpg)
我有一个表A,其中包含以下列:
AId – TargetId – IsActive
对应于此表,我有下面的类(带有额外的计算属性)和mapper:
public class A
{
public virtual long AId { get; set; }
public virtual int TargetId { get; set; }
public virtual int IsActive { get; set; }
//calculated property, doesn't exist in the table
public virtual bool IsClientSide
{
get { return ((this.TargetId & TargetEnum.ClientSide) != 0); }
}
}
using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Type;
using ANamespace.A;
namespace mapping
{
public class AMap : ClassMapping<A>
{
public AMap()
{
this.Cache(x => { x.Usage(CacheUsage.NonstrictReadWrite); x.Region("LongTerm"); x.Include(CacheInclude.All); });
this.Lazy(false);
this.Mutable(true);
this.DynamicUpdate(true);
this.Id(x => x.AId, map => map.Generator(Generators.Native));
this.Property(x => x.TargetId, map => { map.NotNullable(true); map.Type<EnumType<TargetEnum>>(); });
this.Property(x => x.IsActive, map => map.NotNullable(true));
}
}
}
我没有映射这个IsClientSide属性,因为它不在表中.但我想在我的查询中使用它,如下所示:
A aobject = null;
alist = session.QueryOver(() => aobject)
.Where(a => a.IsClientSide)
.And(tt => a.IsActive)
......
我找到了Hendry Luk的“Linq-ing Calculated Properties”帖子,但ILinqToHqlGenerator似乎过于复杂,无法使用这个小小的属性.
我怎样才能在我的mapper类中制定IsClientSide属性呢?
解决方法:
我们需要1)公式映射和2)bitwise operator
Property(x => x.IsClientSide, map =>
{
map.Formula("(Target_ID & 1 <> 0)");
});
和属性应该由NHibernate分配
public virtual bool IsClientSide { get; protected set; }
现在我们可以在任何查询中使用IsClientSide ……
内容总结
以上是互联网集市为您收集整理的c# – 在Nhibernate QueryOver中使用计算属性(未映射)全部内容,希望文章能够帮你解决c# – 在Nhibernate QueryOver中使用计算属性(未映射)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。