Код для создания схемы таблицы SQL Server из ADO.NET - PullRequest
0 голосов
/ 03 сентября 2010

Я бы очень хотел использовать ADO.NET для генерации скрипта CREATE TABLE для создания точной копии данной таблицы.

Причиной этого является постоянное тестирование.Я хотел бы знать, будет ли мое приложение сохраняться в определенной базе данных.Я хотел бы иметь возможность указать приложение на базу данных и таблицу, о которой идет речь, и тогда приложение создаст новую базу данных с точной копией указанной таблицы.Таким образом, постоянное тестирование может проводиться на клонированной таблице, не затрагивая исходную базу данных, и когда я закончу, новую базу данных можно просто удалить.

Прежде чем приступить к этому амбициозному проекту, я хотел бы знатьесли что-нибудь уже существует.Я пробовал Google, но все, что я могу найти, - это способы получить SQL для генерации схемы через пользовательский интерфейс SSMS, а не через код.

1 Ответ

3 голосов
/ 03 сентября 2010

Для этого можно использовать Объекты управления SQL (SMO).

Пример (C #)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.SqlServer.Management.Smo;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Server srv = new Server(@".\SQLEXPRESS");
            Database db = srv.Databases["MyDB"];

            Scripter scrp = new Scripter(srv);
            scrp.Options.ScriptDrops = false;
            scrp.Options.WithDependencies = true;

            //Iterate through the tables in database and script each one. Display the script. 
            //Note that the StringCollection type needs the System.Collections.Specialized namespace to be included. 
            Microsoft.SqlServer.Management.Sdk.Sfc.Urn[] smoObjects = new Microsoft.SqlServer.Management.Sdk.Sfc.Urn[1];
            foreach (Table tb in db.Tables)
            {
                smoObjects[0] = tb.Urn;
                if (tb.IsSystemObject == false)
                {
                    System.Collections.Specialized.StringCollection sc;
                    sc = scrp.Script(smoObjects);
                    foreach (string st in sc)
                        Console.WriteLine(st);
                }
            }
            Console.ReadKey();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...