【问题标题】:tables are not reflecting on database on vs 2013 by using code first approach of EF 6.1通过使用 EF 6.1 的代码优先方法,表未反映在 vs 2013 上的数据库
【发布时间】:2013-12-10 22:20:59
【问题描述】:

我在 VS2013 上的 mvc 项目中创建了模型类并使用以下上下文并使用 EF 6.1

public class DataBase : DbContext
    {
     public class DataBase : DbContext
            {
                public DataBase()
                    : base("Db")
                {
                }

      public DbSet<table> table{ get; set; }
        }
    }
"Db" is my connection string everything ,everything run good but table are not created on my database

【问题讨论】:

  • 请发布您的连接字符串。
  • 您是否从连接字符串中删除了您的登录信息,或者它是否丢失?(不要在此处发布登录信息)因为您已集成 security=false 并且没有用户名/密码,我希望您能得到一个异常,因为您无法登录数据库,因此无法对其进行更改。但是您没有遇到任何异常?当您在调试模式下调用 DbContext(即获取所有表记录)时,您可以检查是否dbcontext 是否正确初始化?并验证 connstring 是否符合您的预期?此外,为了安全起见,您应该从评论(而不是从 connstring)中删除数据源 url。
  • 是的,连接字符串正在工作,因为我在数据库中手动创建了表并访问它,但是我希望这应该由 EF 完成
  • 您确定 ef 正在访问您的数据库而不是 localDb 吗?
  • 是的,我很确定,因为我在服务器上查看我的数据库,在那里我手动创建了我的表

标签: entity-framework c#-4.0 entity-framework-migrations visual-studio-2013


【解决方案1】:

你试过了吗?

public class DataBase : DbContext
{
 public class DataBase : DbContext
        {
            public DataBase()
                : base("Name=Db")
            {
            }

  public DbSet<table> table{ get; set; }
    }
}

:base() 设置为“Name=Db”。

【讨论】:

  • 我刚刚尝试过,但数据库仍然没有显示我的表格
【解决方案2】:

在 ef 6 中,他们改变了工作方式,因此您需要执行一些手动步骤才能生成数据库。我认为你有几个选择:
1。使用打包的管理器控制台并运行 Update-DataBase 命令。 (您必须弄清楚要使用哪些标志)这可能需要您在运行更新之前创建一个具有预期名称的空白数据库。
2。将您的数据库初始化程序命令更改为:

Database.SetInitializer<UserDbContext>(new MigrateDatabaseToLatestVersion<UserDbContext, Configuration>());

这应该使您的代码始终更新/创建数据库。虽然可能不是您想要的生产环境..
3。您创建自己的初始化程序,它还具有在创建时将数据播种到数据库的好处。看看http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

【讨论】:

  • 我在包管理器控制台中通过 Update-Database 命令收到此错误。System.Reflection.TargetInvocationException:调用目标已引发异常。 ---> System.TypeInitializationException:“System.Data.Entity.SqlServer.SqlProviderServices”的类型初始化程序引发了异常。 ---> System.TypeLoadException:来自程序集“EntityFramework.SqlServer,版本=6.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”的“System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy”类型中的方法“ExecuteAsync”没有实施。
  • Hmm.. 可能是您错过了一些标志,或者不是所有的 dll 都实现了实体框架 6,而是一些旧版本。请确认您拥有正确的 ef 版本并且它们在 web.config 中被正确引用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
相关资源
最近更新 更多