Для забавы я создал этот дополнительный метод к словарю. Это должно сделать глубокую копию по мере возможности.
public static Dictionary<TKey, TValue> DeepCopy<TKey,TValue>(this Dictionary<TKey, TValue> dictionary)
{
Dictionary<TKey, TValue> d2 = new Dictionary<TKey, TValue>();
bool keyIsCloneable = default(TKey) is ICloneable;
bool valueIsCloneable = default(TValue) is ICloneable;
foreach (KeyValuePair<TKey, TValue> kvp in dictionary)
{
TKey key = default(TKey);
TValue value = default(TValue);
if (keyIsCloneable)
{
key = (TKey)((ICloneable)(kvp.Key)).Clone();
}
else
{
key = kvp.Key;
}
if (valueIsCloneable)
{
value = (TValue)((ICloneable)(kvp.Value)).Clone();
}
else
{
value = kvp.Value;
}
d2.Add(key, value);
}
return d2;
}
Проверьте DBMain . Это используется для анализа и преобразования моделей баз данных.
Not sure if this does absolutely everything you are looking for...but all of red gates tools rock!
http://www.red-gate.com/products/SQL_Dependency_Tracker/index.htm
Мы используем ClearSQL для PL / SQL. Не безупречный, но довольно полный, быстрый и мне очень нравится пользовательский интерфейс.
На какого поставщика базы данных вы ориентируетесь?
Инструмент SQL Server Tool ApexSQL Enforce http://www.apexsql.com/sql_tools_enforce.asp
Я регулярно использую SqlSpec с www.elsasoft.org
Он создает удобную документацию, по которой можно перемещаться (в форматах html или chm), и работает с большинством баз данных.
Это не совсем безупречно, но неплохо, доступно по цене, и автор отвечает на электронные письма, что я ценю.
Я нашел SchemaSpy полезным. Он генерирует диаграмму схемы и подробные отчеты HTML через ODBC. У него есть вкладка «аномалии» в выходных данных HTML, которая описывает некоторые основные сомнительные конструкции:
Это было очень полезно. Может быть, можно добавить еще таких правил?