我需要在linq查询中比较两个DateTime属性,类似于下面的 -
var patients = from c in session.Query<Patient>() where c.DateAdded.AddDays(1) < c.AdmitDate select c;
Run Code Online (Sandbox Code Playgroud)
当我运行查询时,我得到此异常:System.NotSupportedException {"System.DateTime AddDays(Double)"}
在NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitMethodCallExpression(MethodCallExpression表达式)
我在http://fabiomaulo.blogspot.com/2010/07/nhibernate-linq-provider-exten看了一下Fabio的文章 ......但是treeBuilder没有任何特定于DateTime比较的函数.
这是示例的代码.要运行它,请为FluentNhibernate和SQLite安装NuGet包.
using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.IO;
using System.Linq;
using System.Text;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Mapping;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
using NHibernate.Linq;
namespace ConsoleApplication1
{
class Program
{
private static Configuration _config;
static void Main(string[] args)
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
BuildSchema(session);
using(var transaction = session.BeginTransaction()) …Run Code Online (Sandbox Code Playgroud) NHibernate是否支持SQL VIEWS的映射?任何例子都会有所帮助.
如何在Nhibernate中流畅地映射组件列表?
public class Registration : Entity
{
public virtual IList<InsuranceInformation> InsuranceInformation { get; set; }
}
public class InsuranceInformation
{
public virtual Person Insured { get; set; }
public virtual string PolicyNumber { get; set; }
public virtual string InsuranceCompanyId { get; set; }
public virtual string InsuranceCompanyName { get; set; }
public virtual string PlanType { get; set; }
public virtual string GroupNumber { get; set; }
public virtual FamilyRelationships InsuredRelationshipToPatient { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
注册是实体,保险信息/人是组件.
如果我改变InsuranceInformation是一个实体,我可以FluentNH Automapper容易映射.但是当我将InsuranceInformation更改为Component时,它会抛出一个映射异常.