我有一些看起来像这样的Transact-SQL,可以通过SqlCommand对象执行,还是需要开始学习Sql Management Objects?
BEGIN TRANSACTION
BEGIN TRY
IF NOT EXISTS
(
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_CATALOG = (SELECT DB_NAME())
AND TABLE_NAME = 'SchemaVersion'
)
BEGIN
Print 'Migrating up...'
CREATE TABLE SchemaVersion (
Id INT IDENTITY(1,1) NOT NULL,
Version INT NOT NULL,
CONSTRAINT PK_SchemaVersion PRIMARY KEY CLUSTERED (
Id ASC
)
)
INSERT INTO SchemaVersion (Version) VALUES(1)
PRINT 'Migrated from 0 to 1'
END
ELSE IF (SELECT Version FROM SchemaVersion) = 1
BEGIN
Print 'Migrating down...'
DROP TABLE Dia_SchemaVersion
PRINT 'Migrated from 1 to 0'
END
ELSE
PRINT 'Not migrating...'
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
答案 0 :(得分:3)
是的,这可以由SqlCommand
执行 - 最简单的方法是将它放在存储过程中并执行它。
你有什么问题?
至于学习SSMS - 如果你在SQL Server上开发,那不是一个坏主意。
答案 1 :(得分:3)
将其包装在Stored Procedure中并使用SqlCommand的.ExecuteNonQuery()方法调用它。您可以通过处理SqlConnection's InfoMessage event来“收听”.Net代码中的打印消息。它还有助于将连接的FireInfoMessageEventOnUserErrors属性设置为true。
答案 2 :(得分:1)
您需要了解ADO.NET以及对象的工作方式,主要是
Command对象可以采用任何SQL(ANSI SQL)兼容的查询。如果您要进行交易,那么我建议您处理交易