繁体   English   中英

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

[英]Entity Framework code first, Not working anymore for Console Visual Studio 2015

此代码基于Microsoft网站,请在此处输入链接描述

它以前在我的Visual Studio 2013中都可以使用,我也知道2015年,但是由于某种原因,我更新了Visual Studio 2015,以添加新功能,例如Xamarin和EmulatorVS。 它还更新了Visual Stuidio 2015的某些组件,将启动器本身的图标替换为Violet边框和VS的White徽标。

现在,这个简单的代码非常简单,没有DB连接,默认情况下,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应用程序。

此应用程序不返回任何构建错误,语法错误甚至运行时错误。

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

有任何想法吗?

默认情况下,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 请执行以下步骤以实现此目的:

A.像这样更改您的DbContext

public class BloggingContext : DbContext
    {

    public BloggingContext ()
            : base("ConnectionString")
        {}

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

B.在您的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"相对应

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM