Я тестирую PetaPoco как альтернативу Fluent NHibernate, и я добавил расширение StaTypPocoQueries.PetaPoco, чтобы использовать лямбда-выражения для построения запросов, точно так же, как Fluent NHibernate.
Я не хочу создавать экземпляр класса Database для PetaPoco, поэтому я создал класс Configuration Manager, чтобы настроить его при запуске программы.
public class PetaPocoSessionManager
{
public static string connectionString;
public PetaPocoSessionManager()
{
connectionString = null;
}
public IDatabase CreateSession()
{
return DatabaseConfiguration.Build()
.UsingProvider<SqlServerDatabaseProvider>()
.UsingConnectionString(connectionString)
.UsingDefaultMapper<ConventionMapper>()
.WithAutoSelect()
.Create();
}
}
А теперь в моем классе репозитория я создаю метод для запроса по какому-то конкретному полю.
[TableName("co")]
public class CustomerOrder
{
public string OrderNumber { get; set; }
public string CustomerNumber { get; set; }
public decimal Price { get; set; }
public DateTime OrderDate { get; set; }
public string OrderType { get; set; }
public string Status { get; set; }
public string Warehouse { get; set; }
public string OriginSite { get; set; }
public string TakenBy { get; set; }
public string ExportType { get; set; }
public string Contact { get; set; }
public string CurrencyCode { get; set; }
public string TaxCode { get; set; }
}
public class CustomerOrderBL
{
private IDatabase session;
public CustomerOrderBL(IDatabase session)
{
this.session = session;
}
public CustomerOrder GetByCoNum(string coNum)
{
return session.FirstOrDefault<CustomerOrder>(x => x.CustomerNumber == coNum);
}
}
Однако я получил ошибку в лямбда-выражении, которая говорит, что "не может преобразовать лямбда-выражение в тип 'string', потому что это не тип делегата" .
Дело в том, что у меня нет этой ошибки, если я использую классическую конфигурацию PetaPoco вместо fluent (это создание нового объекта базы данных для каждого запроса).
Я что-то не так делаю? Или StaTypPocoQueries не совместим с текущими настройками?
Заранее спасибо.