Я использую SMO в C# для генерации сценария всей схемы из базы данных.C# SMO не скриптовые ограничения
Вот код, я использую:
// Instanciando
Server srv = new Server(con);
// Reference the database.
Database db = srv.Databases[ConfigurationManager.AppSettings["DB"].ToString()];
// Instanciando el scripteador
Scripter scrp = new Scripter(srv);
var urns = new List<Urn>();
// Propiedades del script
scrp.Options.IncludeHeaders = true;
scrp.Options.SchemaQualify = true;
scrp.Options.SchemaQualifyForeignKeysReferences = true;
scrp.Options.NoCollation = true;
scrp.Options.DriAllConstraints = true;
scrp.Options.DriAll = true;
scrp.Options.DriAllKeys = true;
scrp.Options.DriIndexes = true;
scrp.Options.ClusteredIndexes = true;
scrp.Options.NonClusteredIndexes = true;
scrp.Options.ToFileOnly = true;
// Obteniendo las tablas de la BD
foreach (Table tb in db.Tables)
{
// check if the table is not a system table
if(!tb.IsSystemObject)
{
urns.Add(tb.Urn);
}
}
// Instanciando un string builder para construir el script
StringBuilder builder = new StringBuilder();
System.Collections.Specialized.StringCollection sc = scrp.Script(urns.ToArray());
foreach (string st in sc)
{
// Agregando los comandos al string builder
builder.AppendLine(st);
builder.AppendLine("GO"); // Se coloca GO al final de cada statement
}
// Escribiendo el archivo
File.WriteAllText(path, builder.ToString());
Проблема заключается в том, что скрипт генерируется без каких-либо ограничений. (FK, PK, UQ, CK).
Что я делаю неправильно?