Имеется проект EF6 (code-First). В сущности File имеется свойство FullPath, содержащее полный путь к файлу в верхнем регистре.
Проблема в том, что при поиске файла содержащего в своем пути символ ß
он прозрачно меняется на ss
, другими словами возвращается не то что ищем:
SELECT FullPath
FROM File
WHERE FullPath = '\\SERVER\SHARE\FOLDER\STOß.TXT'
-- returns: '\\SERVER\SHARE\FOLDER\STOSS.TXT'
Поэтому, при наличии путей отличающихся написанием ß
и 'ss' происходят ошибки.
Можно ли каким-либо образом установить COLLATE для определенного столбца? Каким образом решается эта проблема?
Из коробки EF не поддерживает COLLATION.
Если вы хотите указать -- тогда в поправьте метод Up() миграции, создающей столбец SQL-запрос с ALTER COLUMN, как-то так:
public partial class DisplayNameInUser : DbMigration
{
public override void Up()
{
this.AddColumn("dbo.AspNetUsers", "DisplayName", c => c.String(nullable: false, maxLength: 70));
this.Sql("ALTER TABLE dbo.AspNetUsers ALTER COLUMN DisplayName nvarchar(70) COLLATE Latin1_General_CS_AS");
this.Sql("UPDATE dbo.AspNetUsers SET DisplayName = UserName");
this.CreateIndex("dbo.AspNetUsers", "DisplayName", unique: true, name: "DisplayNameIndex");
}
public override void Down()
{
this.DropIndex("dbo.AspNetUsers", "DisplayNameIndex");
this.DropColumn("dbo.AspNetUsers", "DisplayName");
}
}
Насчёт того, какую кодировку ставить мммм.... я бы рекомендовал поэкспериментировать самостоятельно, в помощь могу посоветовать этот топик на EnSO: http://stackoverflow.com/questions/42871959
Возможно, вам подойдёт SQL_Latin1_General_CP437_BIN2, проверил только что на SQL 11:
INSERT INTO [dbo].[AspNetUsers]
([Id] , [Email],[EmailConfirmed],[PasswordHash],[SecurityStamp],[PhoneNumber],[PhoneNumberConfirmed],[TwoFactorEnabled],[LockoutEndDateUtc],[LockoutEnabled],[AccessFailedCount],[UserName],[DisplayName])
VALUES
('1', 'mail1@gmail.com', 0, '123','123',null, 0, 0, 1, 1, 0, 'Masse', 'Masse')
INSERT INTO [dbo].[AspNetUsers]
([Id] , [Email],[EmailConfirmed],[PasswordHash],[SecurityStamp],[PhoneNumber],[PhoneNumberConfirmed],[TwoFactorEnabled],[LockoutEndDateUtc],[LockoutEnabled],[AccessFailedCount],[UserName],[DisplayName])
VALUES
('2', 'mail2@gmail.com', 0, '123','123',null, 0, 0, 1, 1, 0, 'Maße', 'Maße')
SELECT TOP 10
*
FROM [dbo].[AspNetUsers]
WHERE 1 = 1
-- AND DisplayName like '%ss%'
AND DisplayName like '%ß%'
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
I have a datagrid and I want to save information , which was updated in datagrid
Хочу, чтобы запоминалась ссылка, если пользователь находится на странице некоторое времяВ отдельном файле находится session_start(); $_SERVER['REQUEST_URI'];...
Я добавил нужный атрибут и в админ панеле, добавил фото к каждой вариацииНо в данной теме Nitro не меняется основное изображение при выборе...
ЗдравствуйтеНа страницах, которые парсятся по simple html dom (список компаний), иногда встречаются email'ы