2

如何获得两个单独的 ASP.NET 站点,在本例中是使用实体框架和 Web 服务的网站,以使用相同的本地数据库 mdf 和 ldf?

我环顾四周,我认为这种本地数据库称为用户实例 - 至少他们是我目前使用它的方式。在我从MSDN 库中找到以下信息之前,我不确定它是否会起作用,现在我真的不确定它是否会起作用。

用户实例场景包括:

...

使用 Windows 身份验证的专用 ASP.NET 托管。单个 SQL Server Express 实例可以托管在 Intranet 上。应用程序使用 ASPNET Windows 帐户进行连接,而不是使用模拟。用户实例不应用于第三方或共享托管场景,在这些场景中,所有应用程序将共享相同的用户实例,并且不再相互隔离。

无需任何额外配置即可立即工作吗?当我尝试将数据库添加到每个连续的应用程序时,如果有其他任何东西正在使用数据库,我会收到一个文件正在使用错误,这让我相信我不能这样做。但是,如果我停止使用数据库,然后添加它,然后启动它,它似乎工作正常。有没有人向我保证以这种方式使用它不会损坏或遇到任何错误?

最好将 mdf & ldf 存储在网站的 App_Data 目录 (|DataDirectory|) 中。如果我这样做,我认为我不能可靠地为服务使用相对寻址,除非我将它放在站点的子目录中,这是正确的吗?

编辑:我正在使用 SQL Server Express,因为这是学校的作业,所以我几乎必须使用它。如果有没有用户实例的方法,我会尝试不使用它。

4

1 回答 1

1

你不能用User Instance这个。这一次只允许一个客户端连接到您的数据库。当您的两个应用程序使用相同的凭据时,您会收到您描述的错误。当您的两个应用程序使用不同的凭据时,您实际上会获得两个单独的实例(也不是您想要的)。

此外,用户实例仅在 SQL Server Express 上受支持。我不知道你的生产环境是什么样的,但它可能不在 SQL Server Express 上运行?

您应该AttachDBFilename在 Web 应用程序的连接字符串中使用指向本地数据库:AttachDBFilename=|DataDirectory|\MyDB.mdf.

在您的 Web 服务中,您也可以使用AttachDBFilename它,但这取决于 Web 服务的部署位置指向的位置。

于 2009-04-08T08:49:21.633 回答