Linq в hibernate, где исключение параметра условия - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь создать небольшое приложение для проверки концепции, чтобы решить, сможем ли мы использовать Linq2Hibernate в нашем следующем проекте.

База данных, которую мы используем, является стандартной базой данных Informix, но я не ожидаю, что это будет иметь большое значение ... (надеюсь!)

Код, который у меня был для одиночного выбора без предложений, работал как удовольствие, но после добавления предложения where я получаю ошибки параметров:

Test method TestProject3.NHibTest.TestMethod1 threw exception: 
NHibernate.Exceptions.GenericADOException: could not execute query
[ select brand0_.br_code as br1_0_, brand0_.br_name as br2_0_ from Brands brand0_ where brand0_.br_name=? ]
  Name:p1 - Value:Name
[SQL: select brand0_.br_code as br1_0_, brand0_.br_name as br2_0_ from Brands brand0_ where brand0_.br_name=?] ---> System.IndexOutOfRangeException: Invalid index 0 for this IfxParameterCollection with Count=0.

Код для этого указан ниже.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FluentNHibernate.Mapping;
using NHibernate;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate.Driver;
using NHibernate.Dialect;
using NHibernate.Linq;

namespace BLL
{
    public class Brand
    {
        public virtual int? Id { get; set; }
        public virtual string Name { get; set; }

        private static ISessionFactory CreateSessionFactory()
        {
            return Fluently.Configure()
              .Database(
                 IfxOdbcConfiguration
                .Informix1000
                .ConnectionString("Server=bylgia:9525;Database=baccman_dev;UID=ewebreps;PWD=kn1ght;")
                .Provider("NHibernate.Connection.DriverConnectionProvider")
                .Driver<IfxDriver>()
                .Dialect<InformixDialect>()
              )
              .Mappings(
              m => m.FluentMappings.AddFromAssemblyOf<Brand>())
              .BuildSessionFactory();
        }

        public virtual List<Brand> GetBrandsLinq()
        {
            var sessionFactory = CreateSessionFactory();

            using (var session = sessionFactory.OpenSession())
            {
                return session.Query<Brand>().Where(x => x.Name == "Name").ToList();
            }
        }


    }

    public class BrandMap : ClassMap<Brand>
    {
        public BrandMap()
        {
            Table("Brands");
            Id(x => x.Id, "br_code");
            Map(x => x.Name, "br_name");
        }
    }
}

После хорошей охоты в Google - кажется, что L2N не так много!

Я использую NHib v3.2.0.4 от NuGet

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...