database - CREATE DATABASE 的 Linq to Sql ExecuteCommand

标签 database linq-to-sql ado.net

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

相关文章:

ruby-on-rails - heroku 数据库访问和修改太昂贵/太耗时?如何让它更快?

mysql - 如何提高MySQL子查询性能

c# - 具有条件连接和非匿名返回的 LINQ 查询

.net - 如何编写可与 SqlServer 和 Oracle 一起使用的 .Net 应用程序(现在 System.Data.OracleClient 已弃用)

javascript - 跟踪网站上的用户交互

sql-server - 数据库设计工具

linq-to-sql - LINQ TO SQL 语句生成的 SQL 查询

c# - 如何在 LINQ to SQL/SQLMetal 中有效地更新外键?

c# - ObjectDataSource 插入和更新方法错误

c# - ADO.Net : Get table definition from SQL server tables