C# 当MVC使用SQL2014介入EF6调用时,VS2013轰然倒塌

C# 当MVC使用SQL2014介入EF6调用时,VS2013轰然倒塌,c#,asp.net-mvc,entity-framework,entity-framework-4,entity-framework-5,C#,Asp.net Mvc,Entity Framework,Entity Framework 4,Entity Framework 5,我有一个MVC5项目,分为一个主XXXX.站点和一个XXXX.数据dll,其中EF6连接到MS-SQL 2014数据库 当我在MVC控制器上,在XXXX.Data dll中运行的调用中按F10时,一切都很顺利。如果我进入DLL代码并在实际的EF调用上设置断点,VisualStudio就会崩溃 我尝试过不同的方法,比如重新添加EF6.1.1.1,我在DLL和MVC站点上都尝试过,但都没有效果。我尝试删除,然后完全添加EF。我尝试了一个新的项目,只是把代码运行一个简单的存储过程,我甚至试图将Data

我有一个MVC5项目,分为一个主XXXX.站点和一个XXXX.数据dll,其中EF6连接到MS-SQL 2014数据库

当我在MVC控制器上,在XXXX.Data dll中运行的调用中按F10时,一切都很顺利。如果我进入DLL代码并在实际的EF调用上设置断点,VisualStudio就会崩溃

我尝试过不同的方法,比如重新添加EF6.1.1.1,我在DLL和MVC站点上都尝试过,但都没有效果。我尝试删除,然后完全添加EF。我尝试了一个新的项目,只是把代码运行一个简单的存储过程,我甚至试图将Data.dll合并到MVC站点代码移动所有数据库访问MVC站点主要删除了dll本身…但没有任何效果

到目前为止,我注意到:

1如果我在为调用此存储过程而编写的代码上设置断点,Visual Studio就会崩溃

    try
    {
        using (MyDB db = new MyDB())
        {
            // IF BREAKPOINT IS ON LINE BELOW, EXECUTION STOPS ABRUPTLY 
            db.MyStoredProc(value1, value2);
        }
    }
    catch (Exception ex)
    {
        string s = ex.Message;
        return false;
    }
没有引发异常,当它发生时,浏览器会闪烁几次。然后,此消息出现在输出窗口上: XXXX.Data.dll中发生类型为“System.AccessViolationException”的第一次意外异常

2如果我将断点放在实际自动生成的EF6代码中,则程序不会正常运行

public virtual int MyStoredProc(string value1, string value2)
{
    var value1Parameter = value1 != null ?
        new ObjectParameter("Value1", value1) :
        new ObjectParameter("Value1", typeof(string));

    var value2Parameter = value2 != null ?
        new ObjectParameter("Value2", value2) :
        new ObjectParameter("Value2", typeof(string));

    // IF BREAKPOINT IS ON LINE BELOW, EXECUTION RUNS NORMALLY 
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("MyStoredProc", value1Parameter, value2Parameter);
}
注意,我在bin文件夹MVC和DLL上都有EntityFramework和EntitySQLServer DLL

问题: 这是SQL2014的问题吗?连接到SQL2012时,我不会发生这种情况。 是否有显示实际发生异常的设置?
为什么VS爆炸而不是显示实际错误?

我在使用输出参数为“Date”类型的SQL Server存储过程时,遇到了此尝试读取或写入受保护内存异常错误。我尝试了各种各样的事情,但都没有成功,为了时间的利益,我决定采用以下解决方案

1从存储过程中删除日期类型的输出参数

2改为通过存储过程中的select语句返回字符串

SELECT CONVERT(char(10), @AsOfDate, 20) AS AsOfDate
3将存储过程返回的字符串转换为C中的日期时间值

DateTime asOfDate = DateTime.Now;
using (var context = new DA.MyEntities())
{
    var procResult = context.myStoredProcedure(myParameter).FirstOrDefault();
    DateTime.TryParse(procResult, out asOfDate);
}

我对这个折衷方案不太满意,但它确实让我向前迈进了。

Using语句没有打开连接。对数据库的调用不起作用。db.MyStoredProcvalue1,value2在连接关闭时打开连接。这里也有同样的问题。我在实体代码中放置了一个断点,它甚至会在进入EF6方法之前抛出异常。如果我从方法中删除virtual关键字,它将运行。似乎没有覆盖。我在entity context.cs文件中添加了一个非虚拟NV签名,将其链接到重命名为*2的原始文件。它仍然抛出。