使用EF5 Code First时不要获得SQL连接异常

时间:2013-11-19 12:04:57

标签: ef-code-first entity-framework-5 ef-migrations sqlconnection

使用连接到SQL Server 2008 R2 DB的EF5 Code First和Generic Repository / UOW模式,当通过app config在连接字符串中输入无效的服务器条目时,不会抛出无效的连接异常 - 它通过模型创建方法运行没有任何反应,我期待抛出一个异常,我可以抓取并将信息返回给用户,

有没有人知道为什么不抛出异常。

我在下面包含代码示例

提前致谢

标记

BaseFootballContext,它接收连接字符串(如果我传入一个无效的字符串,指向我无法通过查询管理工具连接的服务器

public class BaseFootballContext : DbContext
{
    public BaseFootballContext(string nameOrConnectionString) : base(nameOrConnectionString)
    {
        Configuration.LazyLoadingEnabled = false;
        Configuration.ProxyCreationEnabled = false;
        Configuration.AutoDetectChangesEnabled = false;
    }

    public IDbSet<Booking> Bookings { get; set; }
    // other IDbSets exist

    /// <summary>
    /// Set Primary Keys and other properties here using Fluent API
    /// </summary>
    /// <param name="modelBuilder"></param>
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

        modelBuilder.Entity<Booking>()
                    .Property(x => x.Id)
                    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        modelBuilder.Entity<Booking>().HasKey(x => x.Id);
        modelBuilder.Entity<Booking>().Property(x => x.Version).IsRowVersion();
        modelBuilder.Entity<Booking>().Ignore(x => x.IsBrief);
        modelBuilder.Entity<Booking>().Property(x => x.ModifiedDate).HasColumnType("datetime2");
        modelBuilder.Entity<Booking>().Property(x => x.CreatedDate).HasColumnType("datetime2");


    }
}

我没有异常处理链,当调试它进入模型创建方法并且正常进行时,期待在这里抛出连接异常。

1 个答案:

答案 0 :(得分:0)

(从评论转移)Mark列出的进程不会触发数据库初始化或调用数据库。然后他确认他正在对上下文执行查询,该查询确实会触发对数据库的调用,并且应该抛出异常以提醒他连接字符串的问题。因此,问题变成了追捕被吞噬的例外情况。超时错误。请参阅上述评论中的详细信息。