Можно ли изменить имя во множественном числе таблицы LINQ?

Например, моя таблица называется «Диагностика». Когда я добавляю его в свою модель LINQ to SQL, он пытается выяснить, как сделать его множественным числом, и ошибочно предполагает, что имя объекта должно быть «Диагностика», а имя набора должно быть «Диагностика», что может сбивать с толку.

Когда я меняю имя объекта на «Диагностика» в свойствах, оно не меняет имя набора, поэтому теперь они оба являются «Диагнозом», что еще больше сбивает с толку.

В идеале, я хотел бы иметь контроль над названием набора и изменить его на «Диагностика». Я бы согласился на LINQ, слепо применяя плюрализацию и придумав что-то вроде «Диагностики» или что-то в этом роде. Любые идеи?


person gfrizzle    schedule 07.01.2010    source источник
comment
stackoverflow.com/questions/1467614/   -  person Jack Marchetti    schedule 07.01.2010


Ответы (2)


Насколько мне известно, вы можете изменять названия таблиц.

Откройте конструктор и щелкните таблицу, которую хотите изменить. Щелкните еще раз по имени таблицы, и это должно позволить вам переименовать ее. Насколько мне известно, это не переименует фактическую таблицу базы данных, а только вашу сущность.

Та же информация отображается в окне свойств, если щелкнуть таблицу правой кнопкой мыши и выбрать «Свойства». Вы также должны иметь возможность изменить имя объекта, который отображается в вашей таблице.

person Ed Altorfer    schedule 08.01.2010
comment
Да, таблицу можно переименовать, но LINQ использует алгоритм для определения имени коллекции. Если ваше физическое имя таблицы было Авторы, LINQ пытается помочь, называя сущность Автор и называя коллекцию Авторы. В случае с диагнозом он ошибочно исключает представление о том, что это форма множественного числа от Diagnosi. Когда я снова переименовываю таблицу в «Диагностика», алгоритм по-прежнему вызывает коллекцию «Диагностика». Я хочу контролировать название коллекции. - person gfrizzle; 08.01.2010

Я не знаю, как это сделать, но вот несколько идей:

  • если вам не нужно слишком много моделировать туда и обратно, вы можете переопределить имена классов в сгенерированном XML (щелкните правой кнопкой мыши DBML, отредактируйте в редакторе XML).
  • вы можете попробовать поместить этот один класс в отдельную модель и запустить для него SQLMetal вручную, а не из конструктора VS (он запускается неявно, когда вы сохраняете модель из конструктора). Я думаю, вы можете отключить множественное число с помощью параметра командной строки.
  • вы можете унаследовать от неправильно названного класса и дать ему правильное имя, чтобы скрыть проблему от разработчика.
person cdonner    schedule 07.01.2010