Возможности генератора кода Linq to SQL - PullRequest
1 голос
/ 22 марта 2010

Мне очень нравится Linq to SQL и модель программирования, которую он поощряет. Я думаю, что во многих случаях, когда вы контролируете и схему базы данных, и код, не стоит усилий, чтобы иметь разные реляционные и объектные модели для данных. Работа с Linq to SQL упрощает создание безопасного доступа к данным из .NET, используя методы частичного расширения для реализации бизнес-правил.

К сожалению, мне не нравится конструктор dbml из-за отсутствия функции обновления схемы. До сих пор я использовал SqlMetal, но в нем отсутствуют параметры настройки конструктора dbml. Из-за этого я начал работать над инструментом, который регенерирует весь файл кода, таким как SqlMetal, но у него есть возможность выполнять настройки, доступные в конструкторе dbml (и, возможно, больше в будущем).

Настройки будут описаны в xml-файле, который содержит только те части, которые не должны иметь значений по умолчанию . Это должно уменьшить размер файла xml и затраты на его обслуживание.

Чтобы помочь мне сосредоточиться на правильных функциях, я хотел бы знать: Какие функции будут наиболее важными в генераторе кода linq to sql?

1 Ответ

1 голос
/ 22 марта 2010

Не уверен, что это то, что вы ищете, но вот некоторые особенности, которые я хотел бы увидеть:

  • Возможность присвоить перечисляемый тип полю внешнего ключа. Поэтому, если ваша таблица «Item» ссылается на таблицу «ItemType», имейте возможность легко назначить перечисление «ItemType» для этого отношения, чтобы при обращении к свойству get / set вы получали строго типизированное перечисление вместо идентификатора a. запись в другой таблице. Я думаю, что вы можете сделать это в .cs-файле, который сгенерирован дизайнером DBML, но, конечно, он сорвется при следующем добавлении таблицы в дизайнер. Кроме того, вы можете добавить новое свойство в частичный класс, который отображается в поле идентификатора, но было бы неплохо, если бы это было сделано изначально в конструкторе.

  • В случае отношений FK, присвойте ему имя свойства на основе имени поля FK или имени ограничения FK. Например, если в вашей таблице «Item» есть поля «CreatedByUserID» и «UpdatedByUserID», которые оба ссылаются на таблицу «User», разработчик LINQ DBML создаст класс Item со свойствами «User» и «User1», поэтому почти нужно угадать, какой объект создан, а какой обновлен (и, надеюсь, добавить дополнительные, более явные свойства в частичном классе). То, как вы будете генерировать эти имена, станет немного странным, но все будет лучше, чем у них сейчас.

...