没有在App_Data中创建.mdf

时间:2014-05-30 08:25:15

标签: c# asp.net entity-framework webforms

我正在使用Visual Studio Ultimate 2013中的C#ASP.NET Web窗体项目,同时遵循此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文件夹并使用了“显示所有文件”选项,但没有任何更改。

我的TestingSystemDatabaseInitializer:

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中通过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; }
}

1 个答案:

答案 0 :(得分:0)

要更新数据库,请打开工具 - &gt;库包管理器 - &gt;包管理器控制台,然后在打开的控制台中键入

update-database

要重新启动LocalDB服务,请在“开始/程序”菜单下打开“VS.NET开发人员命令提示符” - >“所有程序” - >“Visual Studio-&gt; Visual Studio工具”

运行以下命令:

sqllocaldb.exe stop v11.0
sqllocaldb.exe delete v11.0

之后再次执行“update-database”。