如何获得两个单独的ASP.NET站点,在这种情况下,使用实体框架和Web服务的网站使用相同的本地数据库MDF&LDF?

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

用户实例方案包括:

...

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

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

最好是,MDF&LDF将存储在网站的App_Data目录(| Datadirectory |)中。如果我这样做,除非我将其放在网站的子目录中,否则我认为我无法可靠地使用该服务的相对地址,这是正确的吗?

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

有帮助吗?

解决方案

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top