• Entity Framework


    什么是Entity Framework?

        ado.net entity framework 是微软以ado.net为基础所发展出来的 对象关系对象(O/R Mapping)解决方案

    什么是ORM?

    Entity Framework使用场景

    各个版本

    框架

    开源地址:

    http://entityframework.codeplex.com/

    安装

    db first

    创建数据模型

     DBContext

    dbset 对应数据库的表

    增删改查  缓存

    public ActionResult Index()
            {
                using (var dbc = new DBModel.SchoolEntities())
                {
                    var objectContext = (dbc as IObjectContextAdapter).ObjectContext;
                };
                return View();
            }

    上下文.dbset.FirstOrDefault<dbset>();  返回第一条记录或者默认值

    上下文.dbset.Remove() 删除

    必须当SavaChange()是执行数据库操作

    Code First

    数据库类:

    blog:

    public class Blog
        {
            public int BlogID { get; set; }
            public string BlogName { set; get; }
            public virtual List<Post> Posts { get; set; }
        }

    Post

    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 Bolg { get; set; }
        }

    dbcontext

    public class BlogingContext : DbContext
        {
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
        }

    代码

    using (var dbc = new CodeFirst.BlogingContext())
                {
                    dbc.Blogs.Add(new CodeFirst.Blog { BlogID = 1, BlogName = "qiaowen" });
                    dbc.SaveChanges();
                    //保存在哪里了呢 dbcontext首先找这台计算机上有没有sql dbcontext express instance 的实例,如果找不到sqlexpress的实例那么就会去找localdb的实例
                }

    Code First Migration

    数据库迁移(ef 6.1.2)

    控制台执行命令

    Enable-Migrations

    blog 类添加个新属性 BlogUrl

    执行命令add-migration 

    这是发现 数据库 并没有更新 因为我们需要更新一下数据库

    命令:update-database

    不要手动升级数据库 

    如果要手动升级数据库

    dbcontext类修改

    migration config修改

    Data Annotation

    修改字段条件(比如字段长度)

    引用

    using System.ComponentModel.DataAnnotations;

    代码

    [StringLength(50)]
    public string BlogName { set; get; }

    通过Migration 更新数据库

    也可以通过

    Fluent API

    修改数据库字段名 条件等

    代码(在数据库上下文)

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Entity<Blog>().Property(b => b.BlogUrl).HasColumnName("urladdress");
            }

    使用code first 连接已有的数据库

    具体操作也是一样

    using (var dbc = new CodeFirstFromDB())
                {
                    dbc.Blogs.Add(new Blogs { BlogName = "ExistBlogName" });
                    dbc.SaveChanges();
                }

    Model First

    先设计数据模型 ,然后通过数据模型生成entityFramework类 和 数据库

    通过右键新增实体和关系(1对1 1对多 多对多) 

    生成数据库

    模式的选择

    codefirst 既可以创建新的数据库也可以连接一个已经存在的数据库

    model first 先创建数据模型 然后生成entity Class 和数据库 用于数据库还不存在的情况

    dbfirst 用于数据库已经存在的情况

    如何选择呢

  • 相关阅读:
    ZOJ 2859 Matrix Searching
    URAL 1102. Strange Dialog
    ZOJ 1986 Bridging Signals
    POJ 3233 Matrix Power Series
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    ZOJ 3471 Most Powerful
    IIS:HTTP 错误 403.9 禁止访问:连接的用户过多
    使用Command对象执行数据库操作
    C#类型转换
  • 原文地址:https://www.cnblogs.com/handsomer/p/4562597.html
Copyright © 2020-2023  润新知