zoukankan      html  css  js  c++  java
  • 【好用的ORM框架】

    对于开发采用orm会带来很大便利,orm即是数据表和实体对于关系框架。内部封装增删改查。它不仅适用于mvc,而且在winform和webform都适用。下面具体介绍orm是使用:

    初步在winform为例使用,随后在在mvc大量运用:

    1,创建项目WindowsForm,并对其进行页面布局

    2,项目布局完成后,点击项目右键,添加ADO.NET 实体生成模型

    3,点击空模型,创建实体.(从数据库生成随后会具体介绍)

    4,生成edmx文件后,左击文件添加实体类

    5,对实体类进行构造:F4点开属性进行设置ID(默认自增)

    6,实现在数据库中建立一个空数据库,然后左击新建实体选择根据模型生成数据库(当然还可以根据数据库生成模型,接下章节进行讲解)。这样就可以自动生成数据库以及对应的表(还可以建立数据表的关系,以及主外键约束,见下面章节)

    7,此步操作后会生成一个sql文件,打开后并执行sql,即可完成数据表生成


    以上构造成实体和数据库,但是具体使用如下:

    打开Model1.edmx的cs文件可以看到上下文和实体.在上下文中有一个命名Model1Container,负责实体和表结果联系,类似网关功能.

    实例化上下文;实现数据增删改查

     //展现用户信息
            public void Bind()
            {
                var user = from c in db.U_user select c;
                dataGridView1.DataSource = user;
            }
            //提交信息
            private void button1_Click(object sender, EventArgs e)
            {
                U_user user=new U_user();
                user.Name=txtname.Text;
                user.Pass=txtpass.Text;
                user.Type=txttype.Text;
                db.U_user.AddObject(user);
                db.SaveChanges();
                this.Bind();
            }
            //更新信息
            private void button2_Click(object sender, EventArgs e)
            {
                int num = Convert.ToInt32(txtid.Text);
                var user =( from c in db.U_user 
                           where c.ID==num
                           select c).FirstOrDefault<U_user>();
                if (user != null)
                {
                    user.Name = txtname.Text;
                    user.Pass = txtpass.Text;
                    user.Type = txttype.Text;
                    db.SaveChanges();
                }
                this.Bind();
            }
            //删除信息
            private void button3_Click(object sender, EventArgs e)
            {
                int num = Convert.ToInt32(txtid.Text);
                var user = db.U_user.Where<U_user>(a => a.ID == num).FirstOrDefault<U_user>();
                db.DeleteObject(user);
                db.SaveChanges();
            }
            //获取当前行
            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                txtid.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
                txtname.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
                txtpass.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
                txttype.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
            }
    

     运行结果:


    orm原理剖析:

    选择edmx文件,选择打开方式可以查看具体xml文件:包含SSDL(表结构),CSDL(实体结构)和C-S mapping(映射关系)

    SSDL(表结构)

    <EntityType Name="U_user">
        <Key>
          <PropertyRef Name="ID" />
        </Key>
        <Property Name="ID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
        <Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="12" />
        <Property Name="Pass" Type="nvarchar" Nullable="false" MaxLength="12" />
        <Property Name="Type" Type="nvarchar" Nullable="false" MaxLength="10" />
      </EntityType>
    

    CSDL(实体结构)

     <EntityType Name="U_user">
              <Key>
                <PropertyRef Name="ID" />
              </Key>
              <Property Type="Int32" Name="ID" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
              <Property Type="String" Name="Name" Nullable="false" MaxLength="12" />
              <Property Type="String" Name="Pass" Nullable="false" MaxLength="12" />
              <Property Type="String" Name="Type" Nullable="false" MaxLength="10" />
            </EntityType>
    

    C-S mapping(映射关系)

    <EntitySetMapping Name="U_user">
          <EntityTypeMapping TypeName="IsTypeOf(Model1.U_user)">
            <MappingFragment StoreEntitySet="U_user">
              <ScalarProperty Name="ID" ColumnName="ID" />
              <ScalarProperty Name="Name" ColumnName="Name" />
              <ScalarProperty Name="Pass" ColumnName="Pass" />
              <ScalarProperty Name="Type" ColumnName="Type" />
            </MappingFragment>
          </EntityTypeMapping>
        </EntitySetMapping>
    
  • 相关阅读:
    Java三大框架
    单例模式和工厂模式(百度文库)
    使用java代码编辑oracle数据库
    extends 与implements的区别和用法
    介绍MVC编程架构模式
    接口具体是什么东西
    Servlet和JSP的本质和区别
    用户注册,登录,留言系统
    页面跳转的五种方法
    cookie的长度和限制数量
  • 原文地址:https://www.cnblogs.com/baiboy/p/3138613.html
Copyright © 2011-2022 走看看