实体框架未连接我的本地数据库

时间:2016-09-06 09:35:48

标签: c# entity-framework

我首先使用EF代码并创建一些类,我希望将其保存在本地数据库中的数据添加到我的C#控制台应用程序中。

我们可以在asp.net项目中添加localdb,并将数据库文件添加到app_data文件夹中。在我的控制台应用程序中,没有选择添加本地数据库,而是我看到我们可以添加基于服务的数据库,我在项目解决方案的文件夹中添加了该数据库。

我不知道“基于服务的数据库”是否与“localdb”相同?

我为我的EF创建了一个连接字符串,以便像这样连接该数据库:

<connectionStrings>
    <add name="BloggingContext" 
         connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\DB\Test.mdf;Initial Catalog=Test;Integrated Security=True"
         providerName="System.Data.SqlClient" />
</connectionStrings>

这是我的第一个EF代码的小代码,它假设连接我的本地数据库。

这些是我的域类和上下文

public class Blog
{
    public int BlogId { get; set; }
    public string Name { get; set; }
    public virtual List<Post> Posts { get; set; } 
}

public  class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public virtual Blog Blog { get; set; } 
}

public class BloggingContext : DbContext
{
    public BloggingContext()
        : base("name=BloggingContext")
    {
    }

    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; } 
}

我正在尝试使用EF将数据添加到我的本地数据库,如下所示:

Console.Write("Enter a name for a new Blog: ");
var name = Console.ReadLine();

var blog = new Blog
        {
            Name = name,
            Posts = new List<Post> 
            { 
                new Post {Title="Desc2", Content="Test2"},
                new Post {Title="Desc3", Content="Test3"} 
            }
        };

db.Blogs.Add(blog);
db.SaveChanges();

当我运行此代码时,我没有收到任何错误并且代码执行成功,但是当我从数据库文件夹中打开localdb时,我没有找到任何在那里创建的表。我知道EF会自动创建表格。

我可以理解EF并没有指向我的数据库,其路径是在连接字符串中指定的。我无法理解EF没有指向我的本地数据库添加到数据库文件夹中的错误。

这是我的解决方案屏幕截图。所有人都可以看到左边没有桌子。

enter image description here

请以这种方式帮助我,因此EF应该将数据保存在我的连接字符串中提到的路径中的数据中。感谢

问题已解决

问题是连接字符串错误。我从连接字符串中删除数据目录,并在那里指定数据库文件的完整路径,问题就解决了。

我的新连接字符串看起来像

<add name="BloggingContext" 
     connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\Users\Mokasna\Documents\Visual Studio 2013\Projects\CodeFirstTest\CodeFirstTest\DB\Test.mdf;Integrated Security=True"
     providerName="System.Data.SqlClient" />

0 个答案:

没有答案