Visual Studio 2012 stackoverflow after entity framework connectionstring missing

0

I'm working in VS2012 with update 1 on a win2k8 r2 64 bit.

Within a simple class library application i do Add > New Item> ADO.NET Entity Data Model

I select a SQL Server on the network and select the database and add a single table. The table gets added, and I can access it as a class name in my code.

The issue: When I do anything with backend DB, the app using my library crashes with stackoverflow error (no exception). For instance this will crash: var logs =_db_context.LOGs.ToList();

Any ideas?

EDIT: The same projects were working in VS2010 on the same machine. This only started happening when I upgraded to VS2012 which upgraded entity framework as well. Also worth mentioning that if I remove the code the access the database, the app runs just fine. Also, removing and re-adding .edmx does not help, neither does clean/re-build or restart VS.

EDIT2: After debugging I've noticed when the line LogServerEntities context = new LogServerEntities() is reached, and I try to expand the context variable from "Locals" VS ends debugging saying Managed (v4.0.30319)' has exited with code -2146233082 (0x80131506).

c#
visual-studio-2012
connection-string
entity-framework-5
asked on Stack Overflow Feb 22, 2013 by joym8 • edited Feb 23, 2013 by joym8

1 Answer

0

The class library was actually a custom trace listener and looked like following. When I commented the FirstChanceHandler in the constructor, the exception actually made its way to the console output: an assembly reference (System.Management.Automation) was failing to load. I did not really need that assembly and simply removed it, and the stackoverflow error (which I'm guessing is a bug) went away.

    public Listener()
    {
        AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;
    }

    public void FirstChanceHandler(object source, FirstChanceExceptionEventArgs e)
    {
        WriteException(e.Exception);
    }

    public void WriteException(Exception e)
    {
        string app_identity = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name;
        string server_name = System.Environment.MachineName;

        using (LogServerEntities context = new LogServerEntities())
        {
            LOG log = new LOG();
            log.DATE = DateTime.Now;
            log.THREAD = Thread.CurrentThread.Name;
            log.MESSAGE = e.Message;
            log.LOGGER = string.Format("{0} {1}", app_identity, server_name);
            log.LEVEL = Level.Exception.ToString();
            log.EXCEPTION = e.GetType().FullName;

            var web_exception = e as WebException;
            if (web_exception != null)
            {
                if (web_exception.Status == WebExceptionStatus.ProtocolError)
                {
                    var response = web_exception.Response as HttpWebResponse;
                    if (response != null)
                        log.HTTP_RESPONSE_CODE = ((int)response.StatusCode).ToString();
                    else
                        log.HTTP_STATUS = web_exception.Status.ToString();
                }
                else
                {
                    log.HTTP_STATUS = web_exception.Status.ToString();
                }
            }

            context.LOGs.Add(log);
            context.SaveChanges();
        }
    }
answered on Stack Overflow Feb 23, 2013 by joym8

User contributions licensed under CC BY-SA 3.0