Я разработал с примером приложения в C # .Net Framework 4.0 и SQL Server 2008. Когда запрос с linq с методом содержат не работает с кхмерским Unicode.
Примечание: поле уже имеет тип NVARCHAR
Пример таблицы структуры:
Person (id, name nvarchar(200))
Linq part :
var predicate = PredicateBuilder.True<Person>();
String strName = "ក";
predicate = predicate.And(e => e.Person.name.Contains(strName));
var query = Person.where(predicate);
return query.ToList();
В результате все записи о том, что имя, начинающееся с «ក», не отображаются в поле зрения.
Не могли бы вы дать мне решение?
Класс модели для сопоставления с таблицей:
[Table(Name = "machine.PERSON")]
public class PersonModel : IEntity {
[Column(Name = "id", DbType = "numeric(18,0) NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
public long Id { get; set; }
[Column(Name = "name", DbType = "nvarchar(255) NULL")]
public String Name { get; set; }
}
Пример кода linq для поиска значения из db:
var predicate = PredicateBuilder.True<PersonModel>();
String strName = "ក";
predicate = predicate.And(p => p.Name.StartsWith();
var q = PersonModel.Where(predicate);
var result = from P in q select new {P.Id, P.Name}; return result.ToList();
Передача оператора Sql по linq:
SELECT [t0].[id] AS [Id], [t0].[name] AS [Name]
FROM [machine].[PERSON] AS [t0]
WHERE [t0].[name] LIKE @p0