Кто-нибудь получил функцию C #, которая отображает тип данных SQL столбца в его CLR-эквивалент?
===============================================================================================

Я сижу, чтобы написать массивный оператор switch (), чтобы превратить типы данных SQL в типы данных CLR, чтобы сгенерировать классы из хранимых процедур MSSQL. Я использую[этот график](https://msdn.microsoft.com/en-us/library/ms131092.aspx) в качестве ссылки. Прежде чем я углублюсь в то, что, вероятно, займет целый день, и мне будет очень трудно полностью протестировать, я хотел бы обратиться к SO-сообществу, чтобы узнать, написал ли кто-нибудь еще или нашел что-то в C #, чтобы выполнить это, казалось бы, общее и, безусловно, утомительное занятие.

 который мы используем. Вы можете настроить его (например, обнуляемые / ненулевые типы и т. Д.), Но это должно сэкономить вам большую часть набора текста.





 что нет встроенного для этого, но вы можете использовать VS для генерации классов для ваших таблиц, а затем попытаться редактировать их



оваре на SqlDbType, как это сделал Грег - или даже поддерживать оба) в моей модели и открыть свойство, которое преобразует тип CLR:





собственный тип .NET. Это делает работу большую часть времени. Если у меня угловой шкаф, я просто напишу быструю вспомогательную функцию.



dt - dataTable

Это вернет тип CLR для соответствующего столбца.
Надеюсь, это поможет, и кстати, это мой первый ответ на стек**overflow**



 но отвечает на общий связанный вопрос. Как только у вас есть`IDataReader` ты можешь позвонить[`IDataRecord.GetFieldType(int)`](https://msdn.microsoft.com/en-us/library/system.data.idatarecord.getfieldtype.aspx) чтобы "получить"`Type` информация, соответствующая типу`Object` это будет возвращено из`GetValue`. & Quot;



 что вы обсуждаете написание оператора switch, но здесь есть альтернатива для Sql Server (аналогичные концепции работают для других БД)

Подумайте об использовании SysObjects для получения полных типов данных и создания своего класса:

Теперь вы просто перечислите DataTable вместо более длинного оператора.



[Wizardby](https://code.google.com/p/octalforty-wizardby/), Тем не менее, он сопоставляется с так называемым «родным» типы данных для`DbType`, которые затем легко преобразовать в типы CLR. Если это подходит, вам потребуется соответствующий`IDbTypeMapper` - или`SqlServer2000TypeMapper` или же`SqlServer2005TypeMapper`.





 чтобы конструктор VS сделал это для вас? Если проект не должен адаптироваться во время выполнения к различным схемам, то вы должны использовать методы генерации кода для создания ваших классов, например, встроенные конструкторы (т.е. наборы типизированных данных) или пользовательские (схема-> XML-> XSLT- & GT; .cs).