Я пытаюсь подключиться к существующим db в oracle с fluentmapping. я получил Mapping над ПользовательскоеFluent Nhibernate над старой базой данных в oracle
public CustomerMapping()
{
Not.LazyLoad();
Id(x => x.Cst_Recid).GeneratedBy.Increment() ;
}
и я пытаюсь создать сеанс
public static ISessionFactory CreateSessionFactory()
{
return Fluently
.Configure()
.Database(OracleClientConfiguration.Oracle10.ConnectionString
("...."))
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<CustomerMapping>();
})
.BuildConfiguration()
.BuildSessionFactory();
}
я есть пробный класс, чтобы попытаться создать SessionFactory
public class MyDataProvider
{
public static Customer GetCustomerById(long customerId)
{
ISessionFactory sessionFactory = SessionFactory.CreateSessionFactory();
ISession session = sessionFactory.OpenSession();
return session.Linq<Customer>().Where(x => x.Cst_Recid.Equals(temp)).FirstOrDefault();
}
}
я не будучи способный получить Клиента по идентификатору, хотя я собираюсь открыть сеанс и активировать ...
тест очень прост - только для проверки выбора активности
[Test]
public void CanGetCustomerById()
{
MyDataProvider provider = new MyDataProvider();
Assert.AreEqual(33941, MyDataProvider.GetCustomerById(33941).Cst_Recid);
}
есть ошибка -
TestCase '... DataLayer.Tests.CustomerMappingTests.CanGetCustomerById' не удалось: NHibernate.ADOException : не удалось выполнить запрос [выбрать * из (SELECT this_.Cst_Recid в Cst1_0_0_, this_.Cst_Customerid как Cst2_0_0_, this_.Cst_First_Name как Cst3_0_0_, this_.Cst_Group_Recid как Cst4_0_0_, this_.Cst_Insdbdt как Cst5_0_0_, this_.Cst_Insdbuser как Cst6_0_0_, this_. Cst_Joingroup_Dt как Cst7_0_0_, this_.Cst_Last_Name как Cst8_0_0_, this_.Cst_Lastupddt как Cst9 _0_0_, this_.Cst_Lastupduser, как Cst10_0_0_, this_.Cst_Tat_Lakoach_Meshalem как Cst11_0_0_, this_.Cst_Typeid, как Cst12_0_0_, this_.Cst_Tziyun_Meshalem_Rashi_Only как Cst13_0_0_, this_.Cst_Tziyun_Mizdamen как Cst14_0_0_ ОТ "Клиент" this_ ГДЕ this_.Cst_Recid =: р0) где ROWNUM < = p1: ] Позиционные параметры: # 0> 33941 [SQL: SELECT * FROM (SELECT this_.Cst_Recid в Cst1_0_0_, this_.Cst_Customerid как Cst2_0_0_, this_.Cst_First_Name как Cst3_0_0_, this_.Cst_Group_Recid как Cst4_0_0_, this_.Cst_Insdbdt как Cst5_0_0_, this_. Cst_Insdbuser, как Cst6_0_0_, this_.Cst_Joingroup_Dt как Cst7_0_0_, this_.Cst_Last_Name как Cst8_0_0_, this_.Cst_Lastupddt как Cst9_0_0_, this_.Cst_Lastupduser как Cst10_0_0_, this_.Cst_Tat_Lakoach_Meshalem как Cst11_0_0_, this_.Cst_Typeid, как Cst12_0_0_, this_.Cst_Tziyun_Meshalem_Rashi_Only как Cst13_0_0_, как this_.Cst_Tziyun_Mizdamen Cst14_0_0_ FROM «Клиент» this_ WHERE this_.Cst_Recid =: p0), Где ROWNUM < =: p1] ----> System.Data.OracleClient.OracleException: ORA-00942: таблица или представление не существует
запрос, который он пытается запустить, построить автоматически с помощью FluentNHibernate. Если я удаляю квоты, запрос выполняется правильно, он получает результат. Проблема в том, что я не могу изменить запрос, поскольку я хочу. Возможно, проблема в том, что мы используем Oracle 11 g, а FluentNhibernate настроен только на Oracle 9 или 10?
будет предлагать любую помощь.
Вам не нужно создавать фабрику сеансов для каждого запроса к базе данных. Создайте его один раз, затем позвольте ему каждый раз возвращать сеансы. –
Привет. Спасибо за ответ . Проблема заключается не в viewionFasctory, а в вопросе, который строится не в правильном направлении. вопрос в том, почему и как я могу настроить его, чтобы он «получил меня от лица заказчика». , конечно, после доказательства концепции я «изменю подход». –