Ниже приведен конкретный пример проблемы, связанной с федерациями SQL Azure ... которая разбивает данные на отдельные базы данных в соответствии с диапазоном ключей.
Ключевые типы диапазонов:
SQL / .Net SQL-тип / CLR .Net
INT / SqlInt32 / Int32, Nullable
BIGINT / SqlInt64 / Int64, Nullable
UNIQUEIDENTIFIER / SqlGuid / Guid, Nullable
VARBINARY (n), макс. N 900 / SqlBytes, SqlBinary / Byte []
В идеале, параметр функции C # может принимать либо тип .Net SQL, либо тип CLR .Net, но хорошо подходит только одна категория типа.
Будет ли подходить параметр типа "объект"? И есть ли реальный способ идентифицировать тип и преобразовать его соответственно?
Концепция примерно такая:
public void fn (объект obj, строка fedName, строка distName, bool filteringOn)
{
... выясните, какой тип obj является одним из допустимых типов ...
string key = obj.toString ();
возвращение string.Format ("ИСПОЛЬЗОВАТЬ ФЕДЕРАЦИЮ {0} ({1} = '{2}') С СБРОСОМ, ФИЛЬТРАЦИЕЙ = {3}", fedName, distName, key, (filteringOn? "ON": "ВЫКЛ «));
}
Хотя значение параметра приведено к строке, оно будет перезаписано / проверено на стороне сервера sql, поэтому проверка его на стороне приложения желательна.