4

我是一个asp mvc 3 noobie。我已经完成了一些教程,现在准备通过尝试构建站点来继续学习。

在所有教程中,您都连接到 SQL CE 或 SQL Express DB。但我希望我的网站在 sql server 上建立一个数据库。

我在我的联网服务器上创建了一个名为 MyDB 的数据库。然后我在我的网络配置文件中设置我的连接字符串,如下所示:

add name="ApplicationServices"
    connectionString="Data Source=Server\ServerInstance;Initial Catalog=MyDB;Integrated Security=True"
    providerName="System.Data.SqlClient"

我创建了模型和脚手架控制器。

我创建了一个简单的 DataBaseContext 像这样:

Imports System.Data.Entity

Public Class DatabaseContext
    Inherits DbContext

    Public Property Employee As DbSet(Of Employee)
    Public Property AnnualLeave As DbSet(Of AnnualLeave)

End Class

但是当我在脚手架控制器中点击以下行时,我得到了错误:

 Function Index() As ViewResult
    Return View(db.Employee.ToList()) //CREATE DATABASE permission denied in database 'master'`.
 End Function
  1. 我应该通过更改 MyDB 数据库的权限来解决这个问题吗?这是 SQL 服务器端的权限问题吗?我很困惑为什么我得到一个创建数据库错误,因为数据库已经存在。
  2. 我是否收到此错误 b/c 我已经创建了数据库?脚手架是否想以某种方式创建数据库?
4

4 回答 4

4

听起来它正在尝试通过错误消息创建一个新数据库。我猜您首先在您的项目中使用 EF 代码,并使用它的迁移功能来构建您的数据库。检查 EF 上下文的设置以确保它正在使用您的连接字符串。

连接字符串或其名称可以传递给 DbContext 的构造函数。如果您使用默认构造函数,它会搜索与派生上下文类名称相同的连接字符串。基本上,确保您的连接字符串与派生的 dbcontext 类具有相同的名称,并且应该可以找到它。

有关其他信息,请参阅此帖子

于 2012-08-13T20:41:10.637 回答
3

1.您需要将 IIS 应用程序池标识设置为 ASP.NET 集成模式。

2.在 SQL Server 中为 IIS APPPOOL\ASP.NET 添加一个登录名。

3.在 SQL Server 中,设置 IIS APP POOL 登录具有 dbcreator 角色。

于 2013-11-21T04:39:41.687 回答
0

使用大师;执行 sp_addsrvrolemember @loginame = N'YourAppUserLogin',@rolename = N'dbcreator';

于 2015-07-08T22:10:27.353 回答
0

<add name="Default" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=test2;user id=sa;password=123456" 
providerName="System.Data.SqlClient" />

将此连接字符串用于您的应用程序

于 2019-03-01T09:49:37.450 回答