调试EF Code First数据库生成

时间:2012-03-15 21:23:37

标签: asp.net-mvc sql-server-2008 ef-code-first

我想知道是否有某种方法来调试ASP.NET MVC 3应用程序的数据库生成。我遇到了一些问题:数据库未创建,我没有错误消息。

已更新

这是我的连接字符串:

  <connectionStrings>
    <add name="SmartRent.Models.AdContext"  connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

这是我的Global.asax.cs

protected void Application_Start()
{
    System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseAlways<SmartRent.Models.AdContext>());
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
}

这是我的EF DataContext:

namespace SmartRent.Models
{
    public class AdContext : DbContext
    {
        public DbSet<Ad> Ads { get; set; }

        public DbSet<CraneLocation> CraneLocations { get; set; }
    }
}

3 个答案:

答案 0 :(得分:1)

  1. 运行我已完成的教程http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/getting-started-with-mvc3-part1-cs
  2. 的soln
  3. 我的代码有效,所以请修改我的代码/代码,直到它中断/工作。
  4. 解决此类问题的最佳方法是使用SQL事件探查器。尝试使用我的代码重新编译。

答案 1 :(得分:1)

仅从Code First的角度来看......
这可能对你有用Entity Framework 4.3 doesn't create database 而你必须使用PM控制台,没有其他方法可以解决问题(这是实际'调试'正在发生的事情的最佳方式)。 PM控制台中的每一步都必须取得成功 - 没有例外,也可以阅读评论,因为它们经常告诉您可能出现的问题。
您还可以运行Update-Database -Script来了解正在创建的内容(在实际创建之前) 并且SQLExpress是默认的(我认为),因此您可以删除连接字符串以测试未指定连接的内容。
简而言之,围绕这个和演奏/理解PM控制台的一些一致性,帮助我控制事物,也可能对你有所帮助 还手动删除之前创建的Db-s(如果你有任何代码,则由Code First删除),删除迁移(如果存在,重新编译然后重新运行),这样通常的调试技术:)。

答案 2 :(得分:0)

请参阅:Debugging Package Manager Console Update-Database Seed Method

从答案中删除

if (System.Diagnostics.Debugger.IsAttached == false)
  System.Diagnostics.Debugger.Launch();