我首先使用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没有指向我的本地数据库添加到数据库文件夹中的错误。
这是我的解决方案屏幕截图。所有人都可以看到左边没有桌子。
请以这种方式帮助我,因此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" />