Entity framework 表未使用EF 6.1的代码优先方法反映vs 2013上的数据库
我在VS2013上的mvc项目中创建了模型类,并使用以下上下文和EF 6.1Entity framework 表未使用EF 6.1的代码优先方法反映vs 2013上的数据库,entity-framework,c#-4.0,entity-framework-migrations,visual-studio-2013,Entity Framework,C# 4.0,Entity Framework Migrations,Visual Studio 2013,我在VS2013上的mvc项目中创建了模型类,并使用以下上下文和EF 6.1 public class DataBase : DbContext { public class DataBase : DbContext { public DataBase() : base("Db") { } public D
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
公共类数据库:DbContext
{
公共类数据库:DbContext
{
公共数据库()
:基准(“Db”)
{
}
公共DbSet表{get;set;}
}
}
“Db”是我的连接字符串,所有内容都正常运行,但并没有在我的数据库上创建表
你试过这个吗
public class DataBase : DbContext
{
public class DataBase : DbContext
{
public DataBase()
: base("Name=Db")
{
}
public DbSet<table> table{ get; set; }
}
}
公共类数据库:DbContext
{
公共类数据库:DbContext
{
公共数据库()
:base(“Name=Db”)
{
}
公共DbSet表{get;set;}
}
}
将
:base()
设置为“Name=Db”。在ef 6中,它们改变了工作方式,因此您需要执行一些手动步骤才能生成数据库。我认为你有几个选择:
1。使用打包管理器控制台并运行更新数据库命令。(您必须找出要使用的标志)这可能需要您在运行更新之前使用预期名称创建一个空白db。
2。将数据库初始值设定项命令更改为:
Database.SetInitializer<UserDbContext>(new MigrateDatabaseToLatestVersion<UserDbContext, Configuration>());
Database.SetInitializer(新的MigrateDatabaseToLatestVersion());
这将使您的代码始终更新/创建数据库。但这可能不是您想要的生产环境。。
3。您可以创建自己的初始值设定项,它还具有在创建时将数据植入数据库的优点。查看“请发布您的连接字符串”。您是否已从连接字符串中删除了登录信息,或者该信息是否已丢失?(不要在此处发布登录信息)由于您的integratedsecurity=false且没有用户名/密码,我希望您得到一个异常,因为您无法登录数据库,因此无法对其进行更改。但是您没有得到任何异常?当您在调试模式下调用DbContext(即获取所有表记录)时,是否可以检查DbContext是否正确初始化?并验证connstring是否符合您的预期?另外,为了安全起见,您应该从注释中删除数据源url(而不是从connstring)。是的,连接字符串正在工作,因为我在数据库中手动创建了表并访问了它,,,但我希望这应该由EFA完成。您确定ef正在访问您的数据库而不是localDb吗?是的,我确定,因为我正在服务器上查看我的数据库,在我手动创建表的地方,我刚刚尝试了此操作,但数据库仍然没有显示我的表。我通过包管理器控制台中的更新数据库命令发现此错误。.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都实现EntityFramework6,而是一些较旧的版本。请确认您拥有正确的ef版本,并且在web.config中正确引用了这些版本