zoukankan      html  css  js  c++  java
  • EF框架step by step(4)—DBcontext应用于已存在数据库

    EF4.1有三种方式来进行数据操作及持久化。分别是Database-First,Model-First,Code-first,前面都已经简单介绍过了.下面简单小结一下:
    1.Database First是基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件。
    2.Model First 这种方式是先利用某些工具(如VS的EF设计器)设计出实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。
    3.Code First 这种方式需要先写一些代码,如实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象,这种方式在前一篇文章已经简单说过了。但其实这种方法与Model First是非常类似的。我们自己写的代码,其实就是用代码表示实体模型,而Model First是用可视化的方式描述了实体模型。

    code First方法默认情况下是以命名空间.DBcontext类名来作为自动创建的数据库名称,如上一篇中的CodeFirstSample.BlogDbContext.

    我们也可以按如下方法指定数据库名称:

    复制代码
        public class BlogDbContext : DbContext
    {
    /// <summary>
    /// 新建数据库,并命名为BlogDB,
    /// </summary>
    public BlogDbContext() : base("BlogDB") { }

    public IDbSet<BlogUser> BlogUsers { get; set; }
    public IDbSet<Post> Posts { get; set; }


    }
    复制代码

    code First这种方式也可以用于已存在的数据库,具体作法如下:

    第一步:在app.config或者web.config中配置数据库连接字符串

    复制代码
    <configuration>
    <connectionStrings>
    <add name="BlogDB" providerName="System.Data.SqlClient"
    connectionString="Data Source=.sqlexpress;Initial Catalog=MyBlogDB;Integrated Security=True"/>
    </connectionStrings>
    </configuration>
    复制代码

    第二步:是让DBcontext获取已存在数据库,在构造DBcontext时,指定使用这个连接字符串

    复制代码
        public class BlogDbContext : DbContext
    {

    /// <summary>
    /// 会在app.config或者web.config文件中查找BlogDB节,做为连接字符串
    /// 但数据库中必须已存在表,即不会重新创建表,这种方法类似DataBase First
    /// </summary>
    public BlogDbContext()
    : base("name=BlogDB")
    { }
    public IDbSet<BlogUser> BlogUsers { get; set; }
    public IDbSet<Post> Posts { get; set; }


    }
    复制代码

    第三步:添加要匹配的类以及匹配关系。

    复制代码
        public partial class BlogUser
    {

    public int BlogUserId { get; set; }
    public string BlogName { get; set; }
    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; }
    public virtual BlogUser BlogUser { get; set; }
    }
    复制代码

    第四步:获取数据

    复制代码
             using (BlogDbContext db = new BlogDbContext())
    {

    //通过主键查找用户
    BlogUser blogUser = db.BlogUsers.Find(4);
    Console.WriteLine(blogUser.BlogName);
    foreach (var item in blogUser.Posts)
    {
    Console.WriteLine(" {0}",item.PostTitle);
    }
    }
    复制代码

    这种方式其实是Database First,只是用我们自己写的类替换了由可视化工具生成类及xml文件。

  • 相关阅读:
    How to install VXDIAG Honda, Toyota and JLR SDD software
    16% off MPPS V16 ECU tuning tool for EDC15 EDC16 EDC17
    Cummins INSITE locked and ask for verification code
    How to use BMW Multi Tool 7.3 to replace lost key for BMW X1
    Bleed Brake Master Cylinder with Intelligent Tester IT2
    Porsche Piwis Tester II “No VCI has been detected”,how to do?
    Creader VIII VS. Creader VII+
    How to solve GM MDI cannot complete the installation
    汽车OBD2诊断程序开发 (原文转载,思路很清晰!)
    汽车节温器单片机开发思路
  • 原文地址:https://www.cnblogs.com/weihengblogs/p/5127594.html
Copyright © 2011-2022 走看看