[visual-studio]SQL 服务器 CE 代码第一次迁移问题

标签: Visual-Studio
发布时间: 2014/3/1 3:44:14
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一群试图使我为我桌面的.NET 应用程序的 SQL 服务器紧凑 4.0 数据库 (代码首先) 迁移的问题。

Enable-Migrations没有工作和目录 Migrations 创建的。之后,当我尝试运行 Add-Migration InitialMigration ,我得到:

不允许对数据库文件的访问。[1914 年,文件名称 = Logo.sdf,SeCreateFile]

这是的第一个问题,但我就来解决由...以管理员身份运行 Visual Studio 不喜欢这种解决办法,也不知道是否以后在生产中它没有将工作在管理员模式下运行的应用程序。现在,我一边让这个问题......

我的连接字符串:

<add name="LogoContext" 
     connectionString="Data Source=Logo.sdf" 
     providerName="System.Data.SqlServerCE.4.0"/>`

所以运行后 Add-Migration InitialMigration 在管理员模式下拿空的迁移就是确定。然后我删除迁移,并添加一个新类:

using System;
using System.Collections.Generic;

public class Blog
{
    public int ID { get; set; }
    public string Title { get; set; }
}

我将引用添加到上下文类:

public class LogoContext : DbContext
{
    public DbSet<Word> Words { get; set; }
    public DbSet<User> Users { get; set; }
    public DbSet<Blog> Blogs { get; set; }
}

然后运行 Add-Migration InitialMigration 再次得到:

public partial class InitialMigration : DbMigration
{
    public override void Up()
    {
        CreateTable(
            "dbo.Blogs",
            c => new
                {
                    ID = c.Int(nullable: false, identity: true),
                    Content = c.String(maxLength: 4000),
                })
            .PrimaryKey(t => t.ID);
    }

    public override void Down()
    {
        DropTable("dbo.Blogs");
    }
}

运行后 Update-Database 我看到:

Applying code-based migrations: [201304211225255_InitialMigration].
Applying code-based migration: 201304211225255_InitialMigration.
Running Seed method.

现在出现问题-我服务器资源管理器中我检查数据库 Logo.sdf 和它并不包括表 Blogs !我甚至尝试从我的应用程序运行这段代码:

var db = new LogoContext();
db.Posts.Add(new Blog { Title= "moo" });
db.SaveChanges();

要检查是否也许我服务器资源管理器不显示表中...但我收到一个异常:

不存在指定的表。[博客]

迁移会显然不被应用到我 Logo.sdf :(文件

如果删除了从连接字符串 app.config ,假设连接到的 SQL Server Express 本地实例。它那里无缝运行!!当我检查该数据库的 SQL 服务器管理工作室时,我看到新 Blogs 还系统表和有关迁移的元数据...

另一个小小的信息:

当我试着运行 Update-Database 再次拿到"没有挂起基于代码迁移。"和那告诉我一些数据将被保存到 Logo.sdf 后所有......至少一些元数据的迁移,但是我仍然不能看到那在服务器资源管理器中的表。

我正在使用 VS 2012 和 EF 5.0。

请帮助我理解这......我看的东西是严重错误的因为它只是 SQL Server Express 实例,但不是与 SQL Server CE 4.0。:((

谢谢!大卫 ·

解决方法 1:

所以,问题是该解决方案创建一个单独.sdf 文件在这里:

"C:\Program 文件 (86) \Microsoft Visual Studio 11.0\Common7\IDE\Logo.sdf"

这是意外和奇怪 IMHO......

我最终使用此连接字符串:

<add name="LogoContext" connectionString="Data Source=|DataDirectory|\Logo.sdf" providerName="System.Data.SqlServerCE.4.0"/>

此引用 bin/Debug/Logo.sdf 和单独运行.exe 时工作在发展中。

以这种方式唯一是我的 Logo.sdf 项目文件 (这得到复制到调试"如果较新的") 现在被完全忽略。将调试文件上运行的所有迁移...这也是大概好......

埃里克 · 发帖的提示 !大卫 ·

官方微信
官方QQ群
31647020