博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF框架step by step(3)—Code-First
阅读量:6262 次
发布时间:2019-06-22

本文共 3659 字,大约阅读时间需要 12 分钟。

 CodeFirst是EF框架的第三种方式,也是最为复杂一种方式,本文将以EF4.1版本为基础,简要讲解一下用法,同时,也介绍DbContext的用法。

本文采用的示例仍然是前两篇采用的博客用户的示例。故不在此对业务进行描述。

首先新建一个C#控制台应用程序,并命名为EFCodeFirstSample。
利用Nuget为该项目添加引用Entity Framework4.1的引用。
PM> Install-Package EntityFramework
当然,你也可以用常规的方式,先下载EF4.1安装后,在进行添加。
同时代码中引用命名空间
using System.Data.Entity;

第二步:为项目添加2个实体对象,仍然采用前面所描述过的博客用户及随笔类,代码如下示:

 

public partial class BlogUser     {
/// /// 默认情况下属性被命名为ID、id或者[ClassName]Id,将映射为数据表中的主键 /// 如果没有类似的命名,并且也未显示指明主键,则生成失败,引发异常 /// public int BlogUserId { get; set; } public string BlogName { get; set; } /// /// 定义博客用户的随笔列表 /// virtual表示该列表为延迟加载 /// public virtual ICollection
Posts { get; set; } } public partial class Post { public int PostId { get; set; } public string PostTitle { get; set; } public int BlogUserId { get; set; } ///
/// 延迟加载博客用户 /// public virtual BlogUser BlogUser { get; set; } }

 

第三步:定义DbContext

 

public class BlogDbContext : DbContext     {
public IDbSet
BlogUsers { get; set; } public IDbSet
Posts { get; set; } }

 

第四步:编写测试代码

using (var db = new BlogDbContext())             {
//向数据库添加记录 var blogUser = new BlogUser() { BlogUserId = 1, BlogName = "燕赤霞" }; db.BlogUsers.Add(blogUser); var post = new Post() { PostId = 1, PostTitle = "一切皆有可能--我与小倩不得不说的事", BlogUserId = 1 }; db.Posts.Add(post); //保存记录,返回受影响的行数 int recordsAffected = db.SaveChanges(); Console.WriteLine("追加{0}记录成功", recordsAffected); }
好了,写到这里可以运行测试了,运行结果如下:

你可以打开数据库管理器,可以找到
EFCodeFirstSample.BlogDbContext 数据库,他包含BlogUsers表和Posts表,并且建立了主外键关系

完整代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity; using System.ComponentModel.DataAnnotations; namespace CodeFirstSample {
class Program {
static void Main(string[] args) {
using (var db = new BlogDbContext()) {
//向数据库添加记录 var blogUser = new BlogUser() { BlogUserId = 1, BlogName = "燕赤霞" }; db.BlogUsers.Add(blogUser); var post = new Post() { PostId = 1, PostTitle = "一切皆有可能--我与小倩不得不说的事", BlogUserId = 1 }; db.Posts.Add(post); //保存记录,返回受影响的行数 int recordsAffected = db.SaveChanges(); Console.WriteLine("追加{0}记录成功", recordsAffected); } } } public partial class BlogUser {
/// /// 默认情况下属性被命名为ID、id或者[ClassName]Id,将映射为数据表中的主键 /// 如果没有类似的命名,并且也未显示指明主键,则生成失败,引发异常 /// public int BlogUserId { get; set; } public string BlogName { get; set; } /// /// 定义博客用户的随笔列表 /// virtual表示该列表为延迟加载 /// public virtual ICollection
Posts { get; set; } } public partial class Post { public int PostId { get; set; } public string PostTitle { get; set; } public int BlogUserId { get; set; } ///
/// 延迟加载博客用户 /// public virtual BlogUser BlogUser { get; set; } } public class BlogDbContext : DbContext { public IDbSet
BlogUsers { get; set; } public IDbSet
Posts { get; set; } } }

转载地址:http://ejzpa.baihongyu.com/

你可能感兴趣的文章
Dubbo 浅读
查看>>
payload有效载荷(转)
查看>>
利用谷歌控制台console调用后台代码
查看>>
jquery 点击按钮实现listbox的显示与隐藏,点击其他地方按钮外的地方,隐藏listbox...
查看>>
CSS3 盒阴影(box-shadow)详解
查看>>
PHP基础之 file_get_contents() 函数
查看>>
跨站请求伪造攻击 CSRF
查看>>
strace
查看>>
linux mysql命令
查看>>
CentOS+Nginx+PHP+MySQL详细配置(图解)
查看>>
冲刺(5)
查看>>
SQL判断字段列是否存在
查看>>
LeetCode - Find Duplicate Subtrees
查看>>
搭建android开发环境Android Studio
查看>>
求$y=Asin(\omega x+\phi)+k$类的解析式
查看>>
用PROCEDURE ANALYSE优化MYSQL表结构
查看>>
从4个方面提高用户体验
查看>>
【10-25】OOP基础-飞机游戏知识点
查看>>
HTC仅限拨打紧急电话
查看>>
c#小软件(SaveClassic)开发手记--(3)基础类(注册表操作类RegEdit)
查看>>