我有一个 ASP.NET MVC 应用程序,我正在使用 LinqToSql 进行数据库访问。
我想从 SQL 脚本创建一个数据库到我的 DBMS (SQL Server Express)。
当我在没有 SQL Server Management Studio 的情况下运行我的脚本时,它使用相同的用户连接,但是,当我使用 ExecuteCommand
从 LinqToSql 运行它时,它确实给出了关于我不能使用 GO 语句的错误。如果我删除 GO 语句并重试,它说 CREATE SCHEMA 应该是批处理的第一行。
因此,我很困惑,是否有任何其他(更好的)方法可以从没有这些问题的 asp.net mvc 运行包含 CREATE DATABASE 和 CREATE SCHEMA 语句的 sql 脚本。
谢谢, 卡萨卡尔
这是脚本的内容;
USE [master]
GO
CREATE DATABASE [TESTDB]
CREATE SCHEMA [base] AUTHORIZATION [dbo]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [base].[TestTable](
[Id] [uniqueidentifier] NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[IsActive] [bit] NOT NULL,
CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
最佳答案
这对我有用:
using (var db = CreateContext()) {
if (db.DatabaseExists())
db.DeleteDatabase();
db.CreateDatabase();
using (var sr = new StreamReader("prepareDatabase.sql")) {
var commands = sr.ReadToEnd().Split(new string[] {"GO\r"}, System.StringSplitOptions.RemoveEmptyEntries);
foreach (var cmd in commands) {
db.ExecuteCommand(cmd);
}
}
}
关于database - CREATE DATABASE 的 Linq to Sql ExecuteCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4372677/