Я пытаюсь создать небольшое приложение для проверки концепции, чтобы решить, сможем ли мы использовать 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
Спасибо