Использование linQ для управления базой данных SQL, созданной с помощью SMO
У меня есть пример приложения winform, который использует представление сетки данных, чтобы показать некоторую форму данных базы данных SQL, которая будет создана с помощью кнопки. Баттун "Создать базу данных" создает базу данных и таблицу в ней с помощью SMO.
так что теперь у меня есть вопрос по этому поводу:
1-й: возможно ли использовать Linq to SQL с базами данных такого типа? если да, пожалуйста, направьте меня, чтобы сделать это!
2-й: если не возможно использовать linq
с этой базой данных, так как я могу показать таблицы ч в моем datagridview
?
Я использую класс belove для создания базы данных и таблицы:
class SqlServerController
{
//ServerConnection connection = new ServerConnection("MSSQLSERVER", "sysAdmin", "");
private Server m_server=null;
public SqlServerController (string server)
{
m_server = new Server(server);
}
public void AttachDatabase (string database, StringCollection files,AttachOptions options)
{
m_server.AttachDatabase(database, files, options);
}
public void AddBackupDevice(string name)
{
BackupDevice device = new BackupDevice(m_server,name);
m_server.BackupDevices.Add(device);
}
public string GetServerVersion(string serverName)
{
return m_server.PingSqlServerVersion(serverName).ToString();
}
public int CountActiveConnections(string database)
{
return m_server.GetActiveDBConnectionCount(database);
}
public void DeleteDatabase (string database)
{
m_server.KillDatabase(database);
}
public void DetachDatabse (string database, bool updatestatistics,bool removeFullTextIndex)
{
m_server.DetachDatabase(database, updatestatistics, removeFullTextIndex);
}
public void CreateDatabse (string database)
{
Database db = new Database(m_server, database);
db.Create();
}
public void CreateTable(string database, string table, List<Column> ColumnList,List<Index> IndexList)
{
Database db = m_server.Databases[database];
Table newTable = new Table(db, table);
foreach (Column column in ColumnList)
newTable.Columns.Add(column);
if (IndexList !=null)
{
foreach (Index index in IndexList)
newTable.Indexes.Add(index);
}
newTable.Create();
}
public Column CreateColumn (string name, DataType type, string @default,bool isIdentity,bool nullable)
{
Column column = new Column();
column.DataType = type;
column.Default = @default;
column.Identity = isIdentity;
column.Nullable = nullable;
return column;
}
public Index CreateIndex(string name, bool isClustered, IndexKeyType type,string[] columnNameList)
{
Index index = new Index();
index.Name = name;
index.IndexKeyType = type;
index.IsClustered = isClustered;
foreach (string columnName in columnNameList)
index.IndexedColumns.Add(new IndexedColumn(index, columnName));
return index;
}
}
а также у меня есть этот код в событии нажатия кнопок:
private void btnCreateDatabase_Click(object sender, EventArgs e)
{
SQL.CreateDatabse("BetaDB2");
List<Column> ColumnList = new List<Column>();
ColumnList.Add(SQL.CreateColumn("id", DataType.Int,"" ,true, false));
ColumnList.Add(SQL.CreateColumn("name", DataType.NVarChar(50), "", false, false));
ColumnList.Add(SQL.CreateColumn("UID", DataType.NVarChar(200), "", false, false));
ColumnList.Add(SQL.CreateColumn("Pass", DataType.NVarChar(50), "", false, false));
SQL.CreateTable("BetaDB2", "userha", ColumnList, null);
}