没有在App_Data中创建.mdf
我正在研究Visual Studio Ultimate 2013中的C#ASP.NET Web Forms项目,同时遵循这个http://goo.gl/1hK73教程(但没有完成相同的项目)。 但是,我无法在App_Date中创建.mdf文件。
我创建了我的实体类,DbContext,用一个项目在我的表中播种,向Web.config添加了一个connectionString:
,并在Global.asax.cs Application_Start()
方法中初始化数据库:
Database.SetInitializer(new TestingSystemDatabaseInitializer());
我查了一些类似的问题,但没有任何对我有用(我已经完成或只是没有工作)。
我在解决方案资源管理器中刷新了App_Data文件夹并使用了“显示所有文件”选项,但没有任何更改。
我的TestingSystemDatabaseInitializer:
using System.Collections.Generic; using System.Data.Entity; namespace Student_Testing_System.Models { public class TestingSystemDatabaseInitializer : DropCreateDatabaseIfModelChanges { protected override void Seed(TestingSystemContext context) { var root = new Category() { CategoryId = 0, CategoryName = "root", Description = "Default category", ParentId = null, Parent = null, }; context.Categories.Add(root); } } }
语境:
public class TestingSystemContext : DbContext { public TestingSystemContext() : base("TestingSystem") { } public DbSet Questions { get; set; } public DbSet Categories { get; set; } public DbSet Templates { get; set; } public DbSet Tests { get; set; } public DbSet StudyGroups { get; set; } }
此外,当通过PM中的Update-Database更新数据库时,我得到错误:
EntityType’IdentityUserLogin’没有定义键。 定义此EntityType的键。 EntityType’IdentityUserRole’没有定义键。 定义此EntityType的键。
这两个类都是EntityFramework的一部分,没有[Key]的数据注释,所以我不知道如何解决这个问题。
IdentityUserLogin:
public class IdentityUserLogin { public IdentityUserLogin(); public virtual string LoginProvider { get; set; } public virtual string ProviderKey { get; set; } public virtual IdentityUser User { get; set; } public virtual string UserId { get; set; } }
IdentityUserRole:
public class IdentityUserRole { public IdentityUserRole(); public virtual IdentityRole Role { get; set; } public virtual string RoleId { get; set; } public virtual IdentityUser User { get; set; } public virtual string UserId { get; set; } }
要更新数据库,请打开工具 – >库包管理器 – >包管理器控制台,然后键入打开的控制台
update-database
要重新启动LocalDB服务,请在“开始”/“程序”菜单 – >“所有程序” – >“Visual Studio” – >“Visual Studio工具”下打开“VS.NET的开发人员命令提示符”
运行以下命令:
sqllocaldb.exe stop v11.0 sqllocaldb.exe delete v11.0
之后再次执行“update-database”。