Linq实体异常不打印错误

时间:2013-02-25 21:17:02

标签: c# asp.net linq

我是从数据库输入信息的LINQ。我设置了try.catch块以捕获这些异常。但是我相信我遇到了一个痛处,我试图看看消息是什么,但它只是绕过打印消息给我,直接进入错误页面。这是我到目前为止的代码示例。我很想得到一些关于为什么这似乎表现得如此奇怪的意见。

 private void CreateEntry()
    {
        var date = DateTime.Today;
        var version = (from v in house.StayLateVersions
                       where v.Active
                       select v).FirstOrDefault();

        if (version == null)
        {
            throw new NullReferenceException();
        }

        //Try to create an entry for the database.  Upon failure, sends the exception to ThrowDbError();

        try
        {
            ResidenceHallInspection rhi = new ResidenceHallInspection();

            rhi.versionId = version.id;
            rhi.submitDate = DateTime.Now;
            rhi.CheckInOrOut = ddlCheck.SelectedItem.Text;
            rhi.Id = txtId.Text;
            rhi.FirstName = txtFirstName.Text;
            rhi.MiddleName = txtMiddleName.Text;
            rhi.LastName = txtLastName.Text;
            rhi.Walls = chbxWalls.SelectedItem.Text;
            rhi.Windows = chbxWindows.SelectedItem.Text;
            rhi.Blinds = chbxBlinds.SelectedItem.Text;
            rhi.Couch = chbxCouch.SelectedItem.Text;
            rhi.CommonRoomCouch = chbxCRCouch.SelectedItem.Text;
            rhi.CommonRoomChair = chbxCRChair.SelectedItem.Text;
            rhi.Doors = chbxDoors.SelectedItem.Text;
            rhi.Carpet = chbxCarpet.SelectedItem.Text;
            rhi.Ceiling = chbxCeiling.SelectedItem.Text;
            rhi.CommonRoomCounter = chbxCRCounter.SelectedItem.Text;
            rhi.Cabinet = chbxCabinet.SelectedItem.Text;
            rhi.Phone = chbxPhone.SelectedItem.Text;
            rhi.Bed = chbxBed.SelectedItem.Text;
            rhi.Desk = chbxDesk.SelectedItem.Text;
            rhi.DeskChairs = chbxDeskChair.SelectedItem.Text;
            rhi.Tub = chbxTub.SelectedItem.Text;
            rhi.Vanity = chbxVanity.SelectedItem.Text;
            rhi.Notes = txtNotes.Text;
            rhi.Building = txtResHall.Text;
            rhi.ApartmentNumber = txtSuitNo.Text;
            rhi.BedSpace = txtBedSpace.Text;

            house.AddToResidenceHallInspections(rhi);
            house.SaveChanges();

        }
        catch (Exception oe)
        {
            ThrowDbError(oe);
            Response.Write(oe.InnerException);
        }
    }

    /*=================================================*/
    /*Possible Errors                                  */
    /*=================================================*/

    private void ThrowDbError(Exception oe)
    {
        Response.Write(oe.Source);
        house.Dispose();
        Session.Contents.Add("FormException", oe);
        Response.Redirect("/Database-Error/", true);
    }

1 个答案:

答案 0 :(得分:0)

最可能的原因是您在try / catch块之外运行数据库version查询。此数据库访问代码中的任何异常都不会由您在上面显示的代码处理。

尝试扩展您的try块以包含数据库访问代码:

var version = (from v in house.StayLateVersions
                   where v.Active
                   select v).FirstOrDefault();

if (version == null)
{
    throw new NullReferenceException();
}

并查看此时是否发现了错误。