首先是实体框架代码,不再适用于控制台 Visual Studio 2015

本文关键字:控制台 适用于 Visual Studio 2015 不再 实体 框架 代码 | 更新日期: 2023-09-27 18:33:55

此代码基于此处Microsoft站点在此处输入链接说明

它之前在我的Visual Studio 2013中工作,我也知道2015年,但是出于某种原因,我更新了Visual Studio 2015以添加新功能,如Xamarin和Emulator VS。它还更新了Visual Stuidio 2015的一些组件,该组件将启动器本身的图标替换为紫色边框和VS的白色徽标。

现在,这个简单的代码非常简单,默认情况下EF将处理没有数据库连接。顺便说一下,我有SQL Server 2012。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace ConsoleApplication2
{
class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog 
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();
            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();
            // Display all Blogs from the database 
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;
            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}
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 DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }
}
}

如您所见,这是非常简单的数据库上下文,没有任何迁移或任何东西,甚至没有需要连接字符串配置文件的 MVC asp 应用程序。

此应用程序不会返回任何生成错误、语法错误甚至运行时错误。

它只是运行,但不生成数据库。没有结果。查询本身不返回任何空值。

有什么想法吗?

首先是实体框架代码,不再适用于控制台 Visual Studio 2015

默认情况下,VS 对数据使用 SQL Express 如

我的数据在哪里?

按照惯例,DbContext 为您创建了一个数据库。

如果本地 SQL Express 实例可用(默认情况下已安装)使用Visual Studio 2010),则Code First在该实例

如果 SQL Express 不可用,则 Code First 将尝试并使用 LocalDb(默认情况下随 Visual Studio 2012 一起安装)

这数据库以派生的完全限定名称命名上下文,在我们的例子中是CodeFirstNewDatabaseSample.BloggingContext

您必须通知 EF 您希望在何处创建数据库。为此,您需要将ConnectionString名称传递给 DbContext 的基构造函数。请按照以下步骤来实现此目的:

答:像这样更改DbContext

public class BloggingContext : DbContext
    {
    public BloggingContext ()
            : base("ConnectionString")
        {}
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }
    }

二.在"您的App.config文件"部分中: configuration添加:

<connectionStrings>
    <add name="ConnectionString" connectionString="Data Source=SQLSERVERINSTANCE;Initial Catalog=DBNAME;User ID=USERID;Password=PASS;" providerName="System.Data.SqlClient" />
  </connectionStrings>

请注意,base("ConnectionString") 中的名称必须与配置行中的名称相对应name="ConnectionString"