Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nối chuỗi NHibernate / MySQL

Sau đây là HqlGenerator giải quyết vấn đề này:

public class ConcatHqlGenerator : BaseHqlGeneratorForMethod
{
    public ConcatHqlGenerator()
        : base()
    {
        this.SupportedMethods = new[] 
        { ReflectionHelper.GetMethodDefinition(() => string.Concat(null, null)) };
    }

    public override HqlTreeNode BuildHql(MethodInfo method,
Expression targetObject,
ReadOnlyCollection<Expression> arguments,
HqlTreeBuilder treeBuilder,
IHqlExpressionVisitor visitor)
    {
        return treeBuilder.Concat(
            new[] 
            {
                visitor.Visit(arguments[0]).AsExpression(),
                visitor.Visit(arguments[1]).AsExpression()
            });
    }
}

Thêm điều này vào HQLGeneratorsRegistry của bạn và bạn sẽ thực hiện tốt các lệnh gọi tới string.Concat trong các câu lệnh LINQ của bạn.

public class LinqToHqlGeneratorsRegistry : DefaultLinqToHqlGeneratorsRegistry
{
    public LinqToHqlGeneratorsRegistry()
        : base()
    {
        this.Merge(new ConcatHqlGenerator());
    }
}
private static ISessionFactory CreateSessionFactory()
{
    var configuration = new NHib.Cfg.Configuration();
    configuration.Properties.Add(NHibernate.Cfg
                                           .Environment.LinqToHqlGeneratorsRegistry, 
typeof(LinqToHqlGeneratorsRegistry).AssemblyQualifiedName);
    configuration.Configure();
    return configuration.BuildSessionFactory();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chọn hàng thứ n trong bảng cơ sở dữ liệu SQL?

  2. Không thể lấy số hàng và tìm nạp khi sử dụng câu lệnh chuẩn bị MySQLi

  3. Hiển thị các giá trị từ bảng cơ sở dữ liệu MySQL bên trong bảng HTML trên trang web

  4. Riêng biệt phiên bản khác nhau của một trang web

  5. Kết nối Symfony2 Doctrine PDO MySQL với TẢI THÔNG TIN ĐỊA PHƯƠNG DỮ LIỆU