gpt4 book ai didi

database - CREATE DATABASE 的 Linq to Sql ExecuteCommand

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:47 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com