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