未在App_Data中创建.mdf
本文关键字:创建 mdf Data App 未在 | 更新日期: 2023-09-27 18:05:57
我正在Visual Studio Ultimate 2013中处理一个C#ASP.NET Web Forms项目,同时执行以下操作http://goo.gl/1hK73教程(但不是做完全相同的项目(。但是,我无法在App_Date中创建.mdf文件。
我已经创建了我的实体类DbContext,用一个项目为我的一个表播种,并向Web.config添加了一个connectionString:
<add name="TestingSystem" connectionString="Data Source (LocalDB)'v11.0;AttachDbFilename=|DataDirectory|'studenttestingsystem.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
,并在Global.asax.cs Application_Start()
方法中初始化数据库:
Database.SetInitializer(new TestingSystemDatabaseInitializer());
我查过一些类似的问题,但对我来说什么都不起作用(我已经做了,或者就是不起作用(。
我刷新了解决方案资源管理器中的App_Data文件夹,并使用了"显示所有文件"选项,但没有任何更改。
我的测试系统数据库初始化程序:
using System.Collections.Generic;
using System.Data.Entity;
namespace Student_Testing_System.Models
{
public class TestingSystemDatabaseInitializer : DropCreateDatabaseIfModelChanges<TestingSystemContext>
{
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<Question> Questions { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Template> Templates { get; set; }
public DbSet<Test> Tests { get; set; }
public DbSet<StudyGroup> StudyGroups { get; set; }
}
此外,在PM中通过更新数据库更新数据库时,我会出现错误:
EntityType"IdentityUserLogin"未定义键。定义此EntityType的键。EntityType"IdentityUserRole"未定义键。定义此EntityType的键。
这两个类都是EntityFramework的一部分,没有[Key]的数据注释,所以我不知道如何解决这个问题。
身份用户登录:
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; }
}
身份用户角色:
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; }
}
要更新数据库,请打开Tools->Library Package Manager->Package Manager控制台并键入打开的控制台
update-database
要重新启动LocalDB服务,请在"开始/程序"菜单->"所有程序"->"Visual Studio"->"VisualStudio工具"下打开"用于VS.NET的开发人员命令提示符">
运行以下命令:
sqllocaldb.exe stop v11.0
sqllocaldb.exe delete v11.0
之后再次执行"更新数据库"。