Entity Framework Code First 实例
2017-09-18 16:49
295 查看
1.创建一个控制台应用程序
2.创建Model
3.创建一个 Context
在创建Context之前先在NuGet包中增加对EntityFramework 包的引用。
这时,VS自动补全一个命名空间:using System.Data.Entity;
此时完整的代码清单如下:
4.读取和添加数据
此时可以运行程序了。
运行程序之后,有个问题:我的数据在哪里?
此时的codefirst自动创建了一个数据库,放置在vs集成的LocalDB中。
关于LocalDB的介绍:http://blog.csdn.net/z767327552/article/details/78019474
打开即可看见code first已经帮我们建好了所有的一切。
5.修改Model
model的修改我们使用Code First Migrations进行操作。
此时打开
选择一下
开启Code First Migrations,输入命令:Enable-Migrations
注意此时项目中就会多出一个文件夹:
注意文件夹中的Configuration类,稍微观察一下此类即可。
在Model Blog中增加一个属性:
然后在nuget包的cmd中输入命令:Add -Migration ‘AddUrl’
此时就会在Migrations文件夹下会多出一个类:201709180748136_AddUrl
但是并没有更新到数据库中。
在nuget包cmd中输入命令:Update-Database
执行此命令之后,LocalDB下自然会更新相应的字段。
6.新增一个Model
同Model的修改。
然后在nuget包的cmd中输入命令:Add-Migration AddUser
此时就会在Migrations文件夹下会多出一个类:201709180751590_AddUser
但是并没有更新到数据库中。
在nuget包cmd中输入命令:Update-Database
执行此命令之后,LocalDB下自然会增加相应的model
7.Fluent API
fluent API 是一种更高级的指定模型配置的方式,它能做数据注解的事,还能做到更灵活的配置(在某些地方无法使用注解的时候)。数据注解和fluent API可以同时使用。
使用fluent API需要override此OnModelCreating 方法。
如下例子,我们更名displayname为display_name。
使用nuget包中cmd:
Add-Migration ChangeDisplayName
Update-Database
使其更改到数据库中。
总结:基本使用便是data annotations和Fluent API以及一个nuget包中的cmd使用。
原文链接:https://msdn.microsoft.com/en-us/library/jj193542(v=vs.113).aspx
2.创建Model
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; } }
3.创建一个 Context
在创建Context之前先在NuGet包中增加对EntityFramework 包的引用。
public class BloggingContext : DbContext { public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } }
这时,VS自动补全一个命名空间:using System.Data.Entity;
此时完整的代码清单如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace CodeFirstNewDatabaseSample
{
class Program
{
static void Main(string[] args)
{
}
}
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; } //virtual 关键字是为了开启懒加载
}
public class BloggingContext : DbContext { public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } }}
4.读取和添加数据
static void Main(string[] args) { using (var db = new BloggingContext()) { // 新建一个博客 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(); // 在blogs中显示所有的名字 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(); } }
此时可以运行程序了。
运行程序之后,有个问题:我的数据在哪里?
此时的codefirst自动创建了一个数据库,放置在vs集成的LocalDB中。
关于LocalDB的介绍:http://blog.csdn.net/z767327552/article/details/78019474
打开即可看见code first已经帮我们建好了所有的一切。
5.修改Model
model的修改我们使用Code First Migrations进行操作。
此时打开
选择一下
开启Code First Migrations,输入命令:Enable-Migrations
注意此时项目中就会多出一个文件夹:
注意文件夹中的Configuration类,稍微观察一下此类即可。
在Model Blog中增加一个属性:
public class Blog { public int BlogId { get; set; } public string Name { get; set; } public string Url { get; set; } //新增的属性 public virtual List<Post> Posts { get; set; } }
然后在nuget包的cmd中输入命令:Add -Migration ‘AddUrl’
此时就会在Migrations文件夹下会多出一个类:201709180748136_AddUrl
但是并没有更新到数据库中。
在nuget包cmd中输入命令:Update-Database
执行此命令之后,LocalDB下自然会更新相应的字段。
6.新增一个Model
public class User { //此处的key为其注解,标识主键,在此空间下 System.ComponentModel.DataAnnotations; [Key] public string UserName { get; set; } public string DisplayName { get; set; } } //新增model注意在BlogContext中相应的添加一个DbSet public class BlogContext : DbContext { public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } public DbSet<User> Users { get; set; } }
同Model的修改。
然后在nuget包的cmd中输入命令:Add-Migration AddUser
此时就会在Migrations文件夹下会多出一个类:201709180751590_AddUser
但是并没有更新到数据库中。
在nuget包cmd中输入命令:Update-Database
执行此命令之后,LocalDB下自然会增加相应的model
7.Fluent API
fluent API 是一种更高级的指定模型配置的方式,它能做数据注解的事,还能做到更灵活的配置(在某些地方无法使用注解的时候)。数据注解和fluent API可以同时使用。
使用fluent API需要override此OnModelCreating 方法。
如下例子,我们更名displayname为display_name。
public class BlogContext : DbContext { public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } public DbSet<User> Users { get; set; } // fluent API 的使用 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<User>() .Property(u => u.DisplayName) .HasColumnName("display_name"); } }
使用nuget包中cmd:
Add-Migration ChangeDisplayName
Update-Database
使其更改到数据库中。
总结:基本使用便是data annotations和Fluent API以及一个nuget包中的cmd使用。
原文链接:https://msdn.microsoft.com/en-us/library/jj193542(v=vs.113).aspx
相关文章推荐
- Entity Framework Code First模式基础知识及入门实例01
- EntityFramework CodeFirst SQLServer转Oracle踩坑笔记
- Entity Framework Code First (一)Conventions
- Entity Framework CodeFirst尝试
- Entity Framework Code First ---EF Power Tool 和MySql一起使用遇到的问题
- 第二篇:Entity Framework CodeFirst & Model 映射
- EntityFrameWork Code First 多数据库以及自定义字符串的使用+连接字符串加密调用
- Entity Framework Code First (五)Fluent API - 配置关系
- Entity Framework Code First (五)Fluent API - 配置关系
- Entity Framework Code First (四)Fluent API - 配置属性/类型
- Entity Framework Code First (六)存储过程
- Code First :使用Entity. Framework编程(8) ----转发 收藏
- EntityFramework Code First 手写代码实现生成数据库
- EntityFramework Codefirst 数据库初始化
- Entity Framework Code First映射配置
- Entity Framework Code First (八)迁移 Migrations
- Entity Framework Code First使用者的福音 --- EF Power Tool使用记之二(问题探究)
- Entity Framework CodeFirst------数据迁移(二)
- Entity Framework Code First (八)迁移 Migrations
- Entity Framework Code-First(8):Configure Domain Classes