小编Fre*_*k C的帖子

在执行ISQLQuery.UniqueResult <DateTime>()时,如何让SQLite返回正确的DateTime?

TLDR:

以下代码在不同的数据库Oracle:select sysdate from dualSQLite中运行select datetime('now')

Session.CreateSQLQuery(cmd).UniqueResult<DateTime>()对Oracle 进行操作时,结果是一个DateTime,而在对SQLite进行操作时是一个字符串.

感觉就像SQLite驱动程序中的一个错误,以及检查返回类型的hack,如果它是一个字符串,则执行DateTime.Parse().我可以这样做,但是有没有办法让NHibernate返回正确的类型?

我试图从数据库中获取当前数据库时间.它在使用Oracle时工作正常,但是当我尝试对SQLite(在我的单元测试中)时,它会因为返回的日期不是DateTime而是字符串而中断.

我见过使用自定义IUserType的解决方案,但在这种情况下我无法看到我应该如何使用它.有什么建议?

using System;
using System.Collections.Generic;
using NHibernate;
using NHibernate.Criterion;
using NHibernate.Dialect.Function;

namespace My.Common.Types {

    public class MyNHibernateDialectException : Exception {
        public MyNHibernateDialectException(string message) : base(message) { }
    } 

    /// <summary>
    /// Define all custom functions here by name. It is important that when adding a new custom sql function, that function will work
    /// in all dialects supported.
    /// </summary>
    public static class MyDatabaseDialects { …
Run Code Online (Sandbox Code Playgroud)

c# sqlite nhibernate datetime isqlquery

6
推荐指数
1
解决办法
1367
查看次数

NHibernate - 根据子属性过滤掉结果

我有这个代码用他们的孩子获取所有启用的组.我遇到的问题是,孩子们也可以被禁用,但我不能流利的nhibernate只能获取所有孩子都启用的组.我认为这是可能的,但如何?

public class Group {
    public bool IsDisabled { get; set; }
    public string Description { get; set; }
    public ICollection<ChildType> Children { get; protected set; }
}

public class ChildType {
    public bool IsDisabled { get; set; }
    public string Description { get; set; }
}

public IList<Group> Search(string searchString) {
    IQueryOver<Group> query = Session.QueryOver<Group>()
        .WhereRestrictionOn(x => x.Description).IsInsensitiveLike(searchString, MatchMode.Start)
        .Where(x => !x.IsDisabled)
        .OrderBy(x => x.Description).Asc
        .Fetch(group => group.Children).Eager;

    return query
        .Cacheable()
        .List();
}
Run Code Online (Sandbox Code Playgroud)

编辑:儿童和群体之间存在N:M关系.

以下是我使用的解决方案:

public …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate fluent-nhibernate queryover

3
推荐指数
1
解决办法
5105
查看次数