У меня есть таблица Users и таблица Items
В таблице Items у меня есть поля такой как
ModifiedBy CreatedBy AssignedTo
который у всех есть целое число идентификатора пользователя. База данных настраивается, чтобы иметь их как внешние ключи назад к таблице Users.
При использовании LINQToSQL отношения, которые автоматически построены от dbml, заканчивают тем, что дали мне имена как Пользователь, User1 и User2
например, myItem. User1. Имя или myItem. User2. Имя
Очевидно, это не очень читаемо, и я хотел бы его быть вроде
myItem. CreatedByUser. Имя или myItem. ModifiedByUser. Имя и т.д.
Я мог изменить имена отношений, но это означает, что я должен восстановить тот каждый раз, когда я изменяю схему дб и обновляю dbml.
Есть ли какой-либо окольный путь это?
Простой ответ: Нет.
Кто-то предложил идею создания частичных классов ассоциации, в которых имена свойств определяются, но это не сработает либо: Переименование свойств объекта LINQ 2 SQL через частичные классы .
Ваш выбор - либо потратить немного времени на изучение LINQ-to-SQL «за кулисами», чтобы можно было вручную внести необходимые изменения, либо просто изменить имена свойств в окне «Свойства». Лично я просто удаляю / перетаскиваю / переименовываю, потому что неправильная установка свойства - это боль для отладки, потому что генерируемые исключения практически не дают вам подсказки относительно того, что их вызвало. Я даже зашел так далеко, что создал библиотеку модульных тестов, которая принимает каждый объект MetaTable в модели и проверяет количество полей, содержимое ServerDataType каждого поля, количество ассоциаций, имена каждой ассоциации и имена каждого конца Ассоциация. Каждые несколько изменений я запускаю модульные тесты, чтобы убедиться, что модель не повреждена.
Во-первых, нет ... имена создаются на основе второй таблицы во взаимосвязи.
Но вы должны знать, что вам не нужно «обновлять» (то есть удалить таблицу в DBML, а затем перетащить ее заново).
Для проекта, над которым я работаю, у нас есть более 200 таблиц ... около 50 из которых мы вручную настроили после перетаскивания их из базы данных. Мы никогда никогда не удаляем и перетаскиваем таблицы, так как после автогенерации было внесено так много изменений.
Вы можете использовать linq to sql без dbml , это может быть дополнительной работой заранее, но с точки зрения изменения имени столбца таблицы это может быть проще чем изменения в dbml, как вы описали.