Это определение функции concat в файле "Dialect.cs" (базовый класс диалекта NH):
RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "||", ")"));
Что должно быть
RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")"));
для SQL CE.
Поэтому вы должны использовать класс MsSqlCe40Dialect.
Я думаю, что он еще не зарегистрирован в Fluent-NHibernate, поэтому вы можете определить его следующим образом:
... MsSqlCeConfiguration.Standard
...
.Dialect<MsSqlCe40Dialect>();
Также есть патч для остальных отсутствующих функций, ожидающих подтверждения:
https://nhibernate.jira.com/browse/NH-2723
Пожалуйста, проголосуйте!
Тем временем вы можете создать свой собственный диалект:
using NHibernate;
using NHibernate.Dialect;
using NHibernate.Dialect.Function;
namespace Test1
{
public class TempSqlCeDialect : MsSqlCeDialect
{
public TempSqlCeDialect()
{
RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")"));
}
}
}
И тогда вы можете использовать его, определив:
... MsSqlCeConfiguration.Standard.Dialect<TempSqlCeDialect>() ...