/*自定义导航栏*/

【好用的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>

 

 

 

 

 

 

 

 

posted @   伏草惟存  阅读(3189)  评论(3编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示