zoukankan      html  css  js  c++  java
  • EF框架step by step(3)—Code-First

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

    public partial class Post
    {
    public int PostId { get; set; }
    public string PostTitle { get; set; }
    public int BlogUserId { get; set; }
    /// <summary>
    /// 延迟加载博客用户
    /// </summary>
    public virtual BlogUser BlogUser { get; set; }
    }
    复制代码

    第三步:定义DbContext

     

    复制代码
       public class BlogDbContext : DbContext
    {

    public IDbSet<BlogUser> BlogUsers { get; set; }
    public IDbSet<Post> 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表,并且建立了主外键关系


    完整代码如下:

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

    public partial class Post
    {
    public int PostId { get; set; }
    public string PostTitle { get; set; }
    public int BlogUserId { get; set; }
    /// <summary>
    /// 延迟加载博客用户
    /// </summary>
    public virtual BlogUser BlogUser { get; set; }
    }


    public class BlogDbContext : DbContext
    {
    public IDbSet<BlogUser> BlogUsers { get; set; }
    public IDbSet<Post> Posts { get; set; }


    }

    }


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

    public partial class Post
    {
    public int PostId { get; set; }
    public string PostTitle { get; set; }
    public int BlogUserId { get; set; }
    /// <summary>
    /// 延迟加载博客用户
    /// </summary>
    public virtual BlogUser BlogUser { get; set; }
    }


    public class BlogDbContext : DbContext
    {
    public IDbSet<BlogUser> BlogUsers { get; set; }
    public IDbSet<Post> Posts { get; set; }


    }

    }

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

    public partial class Post
    {
    public int PostId { get; set; }
    public string PostTitle { get; set; }
    public int BlogUserId { get; set; }
    /// <summary>
    /// 延迟加载博客用户
    /// </summary>
    public virtual BlogUser BlogUser { get; set; }
    }


    public class BlogDbContext : DbContext
    {
    public IDbSet<BlogUser> BlogUsers { get; set; }
    public IDbSet<Post> Posts { get; set; }


    }

    }

  • 相关阅读:
    webpack第一节(4)
    webpack第一节(3)
    webpack第一节(2)
    webpack第一节(1)
    node 下载 解压 重命名
    node 文件操作
    js判断设备(转)
    【CSS3】transform-origin以原点进行旋转 (转)
    手机(转)
    mysql最大连接数问题
  • 原文地址:https://www.cnblogs.com/weihengblogs/p/5127588.html
Copyright © 2011-2022 走看看