【问题标题】:Does Linq to Entities throw SqlExceptions?Linq to Entities 会抛出 SqlExceptions 吗?
【发布时间】:2010-09-09 08:28:38
【问题描述】:

我正在使用 linq 到实体, 我的实体模型位于 MSSQL 数据库之上。

我想知道 linq to entity 是否抛出 SqlExceptions。
换句话说,如果连接数据库出现问题,下面的代码会成功捕获异常吗?
如果没有,在使用 linq to entity 时处理异常的最佳方法是什么?

        using (MyUserEntities userEntities = new MyUserEntities(connectionString))
        {
            try 
            {
                if (userEntities.Users.Any<User>(userInDB =>
                                                 userInDB.UserName == username))
                    {
                       //Do Something
                    }
                    else
                    {
                       //Do Something else
                    }
            }
            catch(SqlException e)
            {
            }
        }

【问题讨论】:

  • 那只适用于 SQL Server,SQL Compact 的异常并非源自 SQLException。

标签: c# .net sql linq entity-framework


【解决方案1】:

是的,如果你的函数中的任何进程导致问题,

userEntities.Users.Any<User>(userInDB =>
                                             userInDB.UserName == username)

它会抛出一个级联异常,然后会被捕获。

虽然数据库连接有特定的超时设置,但有时这需要一段时间。

你为什么不测试它?你本可以自己找到这个答案的

【讨论】:

  • 我正在(盲目地)将一些使用 ADO.NET 的代码转换为使用 linq to Entities 的代码。我无法测试它,因为我想不出生成 SqlException 的方法。
  • 简单,只需将数据库的url改成错误的url并测试,或者给出虚假认证,或者在表中添加一个字段并且不要更新你的实体模型....跨度>
  • 我认为如果我更改 url 或提供虚假身份验证,MyUserEntities 实例将不会被创建。
  • 只要让实体生成,然后改变数据库url
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
相关资源
最近更新 更多