C# EF代码首先似乎使工作进程崩溃

C# EF代码首先似乎使工作进程崩溃,c#,ef-code-first,C#,Ef Code First,在开发阶段,我首先使用EF代码创建数据库。当我将项目移动到服务器上的暂存环境时,我加入了一个小技巧,以避免在特定阶段更改或删除数据库。(因此,它将连接到现有数据库)。我现在制作了一个简单的项目副本,并尝试将其托管在服务器上的另一个位置,以使临时版本和实时版本同时运行,但使用两个不同的数据库,我假设这两个数据库可以在web.config中设置。当我从一个位置运行它时,它工作,但在另一个位置我的应用程序池失败 A process serving application pool 'XYZ' suff

在开发阶段,我首先使用EF代码创建数据库。当我将项目移动到服务器上的暂存环境时,我加入了一个小技巧,以避免在特定阶段更改或删除数据库。(因此,它将连接到现有数据库)。我现在制作了一个简单的项目副本,并尝试将其托管在服务器上的另一个位置,以使临时版本和实时版本同时运行,但使用两个不同的数据库,我假设这两个数据库可以在web.config中设置。当我从一个位置运行它时,它工作,但在另一个位置我的应用程序池失败

A process serving application pool 'XYZ' suffered a fatal communication error with the Windows Process Activation Service. The process id was '1234'. The data field contains the error number.

Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7a5f8
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec49b8f
Exception code: 0xc00000fd
Fault offset: 0x0002e04e
Faulting process id: 0x1d98
Faulting application start time: 0x01ce1b29dcf57530
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\SysWOW64\ntdll.dll
Report Id: 1fd4a0b0-871d-11e2-a272-be31a5415ec8
有什么想法或建议吗

有关守则的详情:

Global.asax-应用程序启动

if (DAL.General.Helpers.Phase == "Live") {
    Database.SetInitializer<MyContext>(new MyContextProductionInitialiser());
} else {
    Database.SetInitializer(new MyContextInitialiser());
}
**Web.config**

<connectionStrings>
    <add name="MyContextConnectionString" connectionString="Server=.;Database=database_staging;User Id=sa;Password=password;" providerName="System.Data.SqlClient " />
</connectionStrings>

数据库:我正在为临时数据库和实时数据库使用共享SQL登录用户

应用程序池:在IIS 7.5中运行两个独立但相同的应用程序池。它们都是v4.0集成的

编辑
如果我将数据库名称更新为与原始数据库名称完全相同,那么它将正常工作。如何修复此问题?

工作进程因堆栈溢出而崩溃。我仍在调查,但在写入数据库时,引发了以下异常:
无法将值NULL插入到列'ID',表'XYZ';列不允许空值。INSERT失败。\r\n语句已终止。
新数据库的标识字段的配置肯定不正确。在发生错误时,我写入错误表,从而导致SO和工作进程崩溃

由于某种原因,按照SQL的配置方式,我无法对数据库进行简单的恢复,因此我只是删除了数据库,并通过编写对象脚本和重新配置必要的表来重新创建它

经验教训:如果工作进程崩溃,有一个很好的理由,在这种情况下,StackOverflow非常有意义

public class MyContextInitialiser : DropCreateDatabaseIfModelChanges<MyContext> {...}
public MyContext() : base("name=MyContextConnectionString") {
    Database.Initialize(false);
}
<connectionStrings>
    <add name="MyContextConnectionString" connectionString="Server=.;Database=database_staging;User Id=sa;Password=password;" providerName="System.Data.SqlClient " />
</connectionStrings>