如何将数据库文件导入到使用Entity Framework的C#控制台应用程序的解决方案中

时间:2014-12-30 16:20:23

标签: c# entity-framework console-application

我在C#中创建了控制台应用程序。我已经为NuGet安装了Entity Framework来解决这个问题。

我上课Person

  public class Person {

        public int Id { get; set; }
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public DateTime BirthDate { get; set; }
    }

我创建了db context:

  public class ApplicationDbContext : DbContext {

        public ApplicationDbContext()
        : base("MiniProjekt") { }
        public DbSet<Person> Persons { get; set; }
    }

在程序包管理器控制台中启用迁移。数据库连接正常工作。我获得了下面代码的有效数据(我之前插入了一些对象),但我不知道数据库在哪里。

    static void Main(string[] args) {
        var context = new ApplicationDbContext();
        Console.WriteLine(context.Persons.Count());
        foreach (Person person in context.Persons) {
            Console.WriteLine(person.LastName);
        }
        Console.ReadKey();
    }

问题是我不知道.mdf文件在我的数据库中的位置。我单击解决方案资源管理器中的显示所有文件,浏览了我的项目文件,但我找不到它。我想稍后通过邮件发送这个项目,我想将数据库文件保存在解决方案中。

问题:如何将数据库文件导入我的控制台应用程序,以便解决方案资源管理器可以使用它(就像在ASP.NET-MVC应用程序中一样)。

编辑:感谢Frank,我发现了数据库,但是如何使其成为解决方案的一部分:

enter image description here

1 个答案:

答案 0 :(得分:4)

如果您没有配置某个内容,那么您的数据库将位于 localdb 中。它与Visual Studio一起安装,您可以在此处找到它:菜单视图&gt; SQL Server对象资源管理器&gt;展开SQL Server&gt;展开所有(localdb)节点。你的数据库应该在那里。

数据库是,不要问我为什么,存储在您的用户文件夹中。在您的用户文件夹中。没有子目录。查看c:\ Users \ YourUserName \,应该有一些.mdf和.ldf文件。

修改

在命令行项目中嵌入数据库并不简单。

  1. 创建一个空的.mdf数据库或将现有数据库复制到项目中。要创建新项目,请右键单击您的项目&gt;添加&gt;新商品......&gt;数据&gt;基于服务的数据库。

    如果需要,可以将其放在名为Data的子目录中。请注意,无论何时构建应用程序,都会将此文件复制到构建目录中;你可以设置&#34;复制如果更新&#34;或&#34;永远不要复制&#34;在您喜欢的属性中。

  2. 将一个应用程序配置文件(app.config)添加到命令行项目中。实体框架安装可能已经为您创建了一个。

  3. 添加连接字符串:

    <connectionStrings>
      <add name="YourContextClassName" connectionString="Server=(localdb)\ProjectsV12;Integrated Security=true;AttachDbFileName=|DataDirectory|YourDatabase.mdf;" providerName="System.Data.SqlClient" />
    </connectionStrings>
    

    YourContextClassName:DbContext的名称。

    (localdb)\ProjectsV12:localdb SQL Server的实例名称。这应该与您客户的实例名称相匹配。 localdb安装。

    YourDatabase.mdf:您在步骤1中创建/复制的mdf文件的名称。

  4. 添加一些代码来定义DataDirectory变量:

    static YourContextClassName()
    {
        var baseDir = AppDomain.CurrentDomain.BaseDirectory;
        // You might Path.Combine(baseDir, "Data") here, if you want to have a
        // data subdirectory.
        var fullPath = Path.GetFullPath(baseDir);
        AppDomain.CurrentDomain.SetData("DataDirectory", fullPath);
    }
    

    这将告诉我们的应用程序什么是| DataDirectory |在连接字符串中。

  5. 部署LocalDB。确保LocalDB以某种方式进入客户端的计算机。 MSDN might help

  6. <强>利润