Я новичок в Entity Framework и ORM для этого.
В проекте, в который я вовлечен, у нас есть устаревшая база данных,
со всеми его ключами в виде строк без учета регистра.
Мы конвертируем в MSSQL и хотим использовать EF в качестве ORM,
но столкнулись с проблемой.
Вот пример, иллюстрирующий нашу проблему:
Таблица A имеет ключ первичной строки,
Таблица B имеет ссылку на этот первичный ключ.
В LINQ мы пишем что-то вроде:
var result = from t in context.TableB select t.TableA;
foreach( var r in result )
Console.WriteLine( r.someFieldInTableA );
, если TableA содержит первичный ключ, который читает «A», а TableB содержит две строки, которые ссылаются на TableA, но с разными регистрами в поле ссылки, «a» и «A».
В нашем проекте мы хотим, чтобы обе строки заканчивались результатом, но только одна
с совпадающим регистром будет там.
Используя SQL Profiler, я заметил, что выбраны обе строки.
Есть ли способ сообщить Entity Framework, что ключи не чувствительны к регистру?
Редактировать:
Теперь мы проверили это с помощью NHibernate и пришли к выводу, что NHibernate работает с ключами без учета регистра. Так что NHibernate может быть лучшим выбором для нас.
Однако я все еще заинтересован в том, чтобы выяснить, есть ли способ изменить поведение Entity Framework.
Спасибо за ваш ответ!
Проблема в том, что если мы добавим это ограничение к базе данных сейчас,
устаревшее приложение может перестать работать из-за того, как оно построено.
Лучшим для нас было бы, если возможно, изменить поведение EF.
Я предполагаю, что это невозможно, но я даю ему шанс.
С уважением,
Фредрик
edit: Причина, по которой я добавил ответ на свой вопрос, заключалась в том, что я добавил этот вопрос до того, как стал зарегистрированным пользователем, и когда я зарегистрировал свой аккаунт, я не мог добавлять комментарии или редактировать мой пост. Теперь аккаунты объединены.