Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7

  昨天,我们介绍了EF的新特性和开发计划,如果你还不了解,请移步 Entity Framework7 有哪些不同?现在开发到什么程度了? 。今天,我们开学习全功能.NET(Full .NET)下使用EF7。官方已经写了关于最新的 Pre-Release版本EF7.0.0-beta7的入门教程,很详细,我就没有必要自己再重复造轮子了,只因为是英文的,为了方便不少懒人(不是看不懂英文,是看着英文就不想看下去,无名的觉得复杂。还有一点就是不愿意去国外的站点去查找资料),特作一个简单的翻译。如果你不是懒人的话,请稳步(原文地址:    http://ef.readthedocs.org/en/latest/getting-started/full-dotnet.html),随便帮帮我看看,有什么不妥的地方,欢迎指正,谢谢!

  本文,我们将构建一个控制台应用,让它使用EF7执行基本的数据访问。你将在本文看到如下的知识点:

  1、安装 NuGet 2.8.6 或更高版本;

  2、创建一个新的项目;

  3、安装实体框架(EF7.0.0-beta7);

  4、创建模型;

  5、创建数据库;

  6、使用模型;

  你可以在Github上查看本文的示例:https://github.com/aspnet/EntityFramework.Docs/tree/master/docs/getting-started/full-dotnet/sample

  注意:本文使用的版本是EF7.0.0-beta7,它是在NuGet.org上可用的最新预发行版本。 你可以在 https://www.myget.org/F/aspnetvnext/api/v2/ 获取最新代码的编译版本。代码变化太快,我们不会为入门教程维护最新的文档。

一、安装 NuGet 2.8.6 或更高版本

  安装EF7需要NuGet2.8.6,或更高的版本。安装更新后,请重启你的Visual Studio。

  1、Visual Studio 2015  不需要安装,因为它已经包含了一个兼容版本;

  2、Visual Studio 2013  请安装针对VS2013的最新的NuGet版本

  3、Visual Studio 2012  请安装针对VS2012的最新的NuGet版本

  注意:NuGet 版本号可能会造成混淆,我们所需的是 2.8.6 扩展版本2.8.60610.xxx。

二、创建一个新项目

  1、打开Visual Studio(本文使用的是Visual Studio 2015,你可以使用VS2012及以上的版本);

  2、文件(File)->新建(New)->项目(Project)...

  3、从左边菜单选择Template->Visual C#->Windows;

  4、选择 Console Application(控制台应用)项目模板;

  5、选择.NET4.5或者更高的.NET框架;

  6、给你的项目命名,然后点确定(OK);

三、安装Entity FrameWork

  为了能使用EF7,你得先安装上你想使用的数据库及提供者(Provider),本文使用的是 SQL Server。下面是EF7下可用的数据库提供者(Database Provider)清单。

    1、EntityFramework.SqlServer     2、EntityFramework.SQLite     3、EntityFramework.InMemory     4、EntityFramework.SqlServerCompact40     5、EntityFramework.SqlServerCompact35     6、EntityFramework.Npgsql

  A、在菜单上选择Tools->Nuget Package Manager(Nuget 程序包管理器)->Package Manager Console(程序包管理器控制台);

  B、运行命令 “Install-Package EntityFramework.SqlServer –Pre”

  因为本文后面还要使用实体框架的相关命令来维护数据库,所以我们现在还得安装命令程序包(Commands package)。

  C、运行命令“Install-Package EntityFramework.Commands –Pre”;

四、创建模型

  现在是时候定义一个上下文和实体类来构建模型了。

    1、Project->Add Class(添加类)...;

    2、键入Modle.cs作为类名,并点击OK(确定);

    3、使用下面的代码替换文件中的内容;

  注意: OnConfiguring 方法(EF7中新增的)用于定义使用的提供者,和其它可选的配置。

 1 using Microsoft.Data.Entity;
 2 using System.Collections.Generic;
 3
 4 namespace EFGetStarted.ConsoleApp
 5 {
 6     public class BloggingContext : DbContext
 7     {
 8         public DbSet<Blog> Blogs { get; set; }
 9         public DbSet<Post> Posts { get; set; }
10
11         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
12         {
13             // Visual Studio 2015 | 使用Visual Studio创建的LocalDb 12 实例
14             optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
15
16             // Visual Studio 2013 | 使用Visual Studio创建的LocalDb 11 实例
17             // optionsBuilder.UseSqlServer(@"Server=(localdb)\v11.0;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
18
19             // Visual Studio 2012 | 使用Visual Studio创建的SQL Express实例 20             // optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
21         }
22
23         protected override void OnModelCreating(ModelBuilder modelBuilder)
24         {
25             //  配置Blog.Url为Required
26             modelBuilder.Entity<Blog>()
27                 .Property(b => b.Url)
28                 .Required();
29         }
30     }     //  博客
31    public class Blog
32     {
33         public int BlogId { get; set; }
34         public string Url { get; set; }
35
36         public List<Post> Posts { get; set; }
37     }
38   //  文章
39     public class Post
40     {
41         public int PostId { get; set; }
42         public string Title { get; set; }
43         public string Content { get; set; }
44
45         public int BlogId { get; set; }
46         public Blog Blog { get; set; }
47     }
48 }

 五、创建数据库

  拥有模型之后,就可以使用数据迁移(Migrations)来创建数据库.

    1、在菜单上选择Tools->Nuget Package Manager(Nuget 程序包管理器)->Package Manager Console(程序包管理器控制台);

    2、执行命令“Add-Migration MyFirstMigration” 为刚才的模型创建一个迁移支架(scaffold);

    3、执行命令“Update-Database”  应用一个迁移到数据库。因为数据库不存在,所以在应用迁移之前,它会为你创建一个数据库;

  提示:如果你对模型时行了修改,请使用命令“Add-Migration”支架(scaffold)一个新的迁移来应用相应的修改。你一旦检查并确认了生成的支架(scaffold)代码,便使用命令“Update-Database”应用这些修改到数据库。

六、使用模型

  现在可以使用模型执行数据访问了。

    1、打开文件 Program.cs;

    2、使用下面的代码替换文件中的内容;

 1 using System;
 2
 3 namespace EFGetStarted.ConsoleApp
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             using (var db = new BloggingContext())
10             {
11                 db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
12                 var count = db.SaveChanges();
13                 Console.WriteLine("{0} records saved to database", count);
14
15                 Console.WriteLine();
16                 Console.WriteLine("All blogs in database:");
17                 foreach (var blog in db.Blogs)
18                 {
19                     Console.WriteLine(" - {0}", blog.Url);
20                 }
21             }
22         }
23     }
24 }

  2、Debug->Start Without Debugging(开始执行(不调试));

  你将看到一个blog被保存到了数据库中,并在控制台打出来blog的详细内容,如图:

  正如你看到的,文中使用了数据迁移命令,随着code-first的广泛使用,相信使用它的机会会越来越多,下面我把自己使用中遇到的一常问题分享给大家。

    类似下面的异常:

enable-migrations
enable-migrations : 无法将“enable-migrations”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ enable-migrations
+ ~~~~~~~~~~~~~~~~~
 + CategoryInfo : ObjectNotFound: (enable-migrations:String) [], CommandNotFoundException
 + FullyQualifiedErrorId : CommandNotFoundException。

  导致这个问题原因一般如下:

    1、输入的中划线“-”格式不对,检查是否为全角状态下输入,误输入了下划线“_",或是前后有空格;

    2、没有引用EntityFramework命令,请执行如下名称(Import-Module 项目路径\packages\EntityFramework.6.1.3(EF版本)\tools\EntityFramework.psd1)

  另外需要注意的是,执行命令时,默认项目一定要选择包含模型的项目,如图:

  说到推荐,和阅读,我有一个不明白的地方,为什么,什么这个感悟,那个经历的文章都会有很高的阅读量和推荐数呢?有一些写得比较好的博客(比如有些大牛写的DDD类的文章)却只有几百的阅读量。难道我们.NET开发人员缺少的不是技术,是心灵鸡汤? 为什么呢?你能告诉我吗?

时间: 2024-08-10 19:17:40

Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7的相关文章

Entity Framework7 入门之全功能.NET版本下使用EF7(含源码)另附数据迁移常见错误处理

Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7 昨天,我们介绍了EF的新特性和开发计划,如果你还不了解,请移步 Entity Framework7 有哪些不同?现在开发到什么程度了? .今天,我们开学习全功能.NET(Full .NET)下使用EF7.官方已经写了关于最新的 Pre-Release版本EF7.0.0-beta7的入门教程,很详细,我就没有必要自己再重复造轮子了,只因为是英文的,为了方便不少懒人(不是看不懂英文,

Entity Framework7 有哪些不同?之具体功能

Entity Framework7 有哪些不同?之具体功能 前面我们介绍了关于EF7的新特性.开发计划和入门介绍.今天,我们来看看EF7的具体新功能及用法.本文中的环境,为EF7入门里介绍的环境. 1.在Linq to Entity 查询中对列使用类型转换,请见如下代码: 1 var result = db.Blogs.Where((b => Convert.ToInt32(b.IntString) == 2)).FirstOrDefault(); 代码中的Convert.ToInt32(b.I

Entity Framework7 有哪些不同?现在开发到什么程度了?

Entity Framework7之开篇 一.Entity Framework7 简介 Entity Framework7简称EF7,是微软正在开发的最新的在.NET应用中首选的数据访问技术.它是轻量级和可扩展的启用新的平台和新的数据存储的实体框架版本.以下的应用: Windows Phone. Windows 应用商店,ASP.NET 5 和传统的桌面应用程序,现在都可以利用的实体框架.EF7除了支持关系型数据库, 还支持如 Azure 表和Redis非关系型数据存储. 从上面我们可以看到以下

独家全功能USB2.0开发板,最强CY7C68013A-128核心板,超强资料不断提供更新服务

       学习USB开发再也不用买书啦,也不用花费重金去上培训班啦,IFLabs开创USB学习开发新模式,你所需要的知识.技术.范例.代码等等统统都在这里.IFLabs打造全网最丰富.最权威的USB开发平台和资料. 热卖的IFLabs精品USB2.0核心板套件再升级,全网独家推出最强.最全功能的Cypress USB 2.0 CY7C68013A-128AXC核心板开发板,全网最全配件和全网最全开发资料.只需这一次投入,即可实现USB接口开发的从入门到精通!并且有长期的全网最全开发手册更新支

全功能HTRI 7.0换热器计算软件

全功能HTRI 7.0换热器计算软件 HTRI.Xchanger.suite.V6.00换热器计算    能够对圆筒炉和方箱炉的性能进行模拟计算. Xfh 使用Hottel的区域法来计算加热炉各部位的热辐射和工艺侧的性能.与内含的燃烧室和对流室模型一起能够对燃烧式加热炉进行全面的性能评价.能够对板框式换热器进行设计, 核算和模拟计算, 可以使用自定义板型或者内置的制造厂数据库内的板型:Xist 支持包括所有的标准TEMA类型的计算,并且集成了流动导致的震动计算, 管子排布工具等等.进行空冷器和经

jQuery Autocomplete 自动补全功能

使用Autocomplete可以很简单的就有文本框的自动补全功能提示了. 在HTML文件中引入autocomplete的js文件和css样式文件,以及autocomplete压缩包中的jQuery的js文件,不要私自用高版本的jQuery,可能会导致显示不出效果. 先来从网友那里拷贝过来的最简单的例子: <span style="font-size:24px;"><!DOCTYPE html> <html> <head> <meta

solr进阶七:与jQuery结合的自动补全功能

网上有大量的jQuery自动补全功能的插件,我实现这个功能是采用网友写好的纯jQuery代码,而不是采用插件,因为特效会差很多.而后台的数据是从solr那边获取过来,通过整理,放到对象中,再放到集合中,然后在servlet层解开,生成xml文件,返回到前台,形成自动提示补全的功能,流程非常简单,没有采用框架技术,只是用了JSP的servlet来做中间层而已. 目录结构如下: 1.先编写实体类src\com\lifeix\entity\Word.java package com.lifeix.en

[整理]Node入门 &#187; 一本全面的Node.js教程 - Demo实践所遇到的问题

花了一个上午看完[转载]Node入门 » 一本全面的Node.js教程 根据里面的Demo自己手动实现过程中还是需到写问题,特整理在此. <1>.由于node.msi安装包已经自动添加了系统环境变量,所以可以在任意地方路径下运行node xxx.js.<2>.确定2个环境变量是否已添加(1)一个是PATH上增加node.exe的目录C:\Program Files\nodejs,(已自动添加)(2)一个是增加环境变量NODE_PATH,值为C:\Program Files\node

APICloud首款全功能集成开发工具重磅发布,彰显云端一体理念

近日,APICloud重磅推出首款云端一体的全功能集成开发工具--APICloud Studio 2.为了更深入了解这款开发工具的特性及优势,APICloud CTO 邹达针对几个核心问题做出了解答. 一.APICloudStudio 2是一款什么样的开发工具? 我们为APICloud Studio 2提炼出三个关键词,「Atom」.「云端一体」和「全功能集成」. 首先,APICloud Studio 2是一款基于Atom内核的开发工具.众所周知,Atom是一款主流.开源的前端编码工具,在Git