• Entity Framework系列之DataBase First


    第一步 新建数据库和表

    USE [TestDB]
    GO
    /****** Object:  Table [dbo].[T_User]    Script Date: 01/14/2015 20:27:52 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[T_User](
        [Id] [int] IDENTITY(1,1) NOT NULL,
        [Name] [nvarchar](50) NULL,
        [Password] [nchar](10) NULL,
     CONSTRAINT [PK_T_User] PRIMARY KEY CLUSTERED 
    (
        [Id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO

    第二步 ADO.NET实体数据模型

    新建ADO.NET实体数据模型

    程序自动生成以下文件

    TestModel.edmx

    TestModel.Context.tt

    TestModel.Context.tt是生成数据操作实体类的模板

    namespace EFDEMO1
    {
        using System;
        using System.Data.Entity;
        using System.Data.Entity.Infrastructure;
        
        public partial class TestDBEntities : DbContext
        {
            public TestDBEntities()
                : base("name=TestDBEntities")  //TestDBEntities为App.config中的数据库连接字符串
            {
            }
        
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                throw new UnintentionalCodeFirstException();
            }
        
            public DbSet<T_User> T_User { get; set; }
        }
    }

    TestModel.Designer.cs

    TestModel.edmx.diagram

    TestModel.tt

    TestModel.tt模板是生成T_User实体类的模板

    namespace EFDEMO1
    {
        using System;
        using System.Collections.Generic;
        
        public partial class T_User
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Password { get; set; }
        }
    }

    修改数据库

    当修改数据库对象(如表),只需要在TestModel.edmx界面上右键点击从数据库更新模型,更新完成后保存即可自动生成相关代码(如实体类)。

    第三步 增删改查

    using System;
    using System.Data;
    using System.Linq;
    using System.Windows.Forms;
    
    namespace EFDEMO1
    {
        public partial class Form1 : Form
        {
            TestDBEntities entity = new TestDBEntities();
            
            public Form1()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 新增
            /// </summary>
            private void Add()
            {
                T_User model = new T_User()
                {
                    Name = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")
                };
                entity.T_User.Add(model);
                entity.SaveChanges();
                Query();
            }
    
            /// <summary>
            /// 删除
            /// </summary>
            private void Delete()
            {
                if (listBox1.SelectedItem == null)
                {
                    return;
                }
                int id = Convert.ToInt32(listBox1.SelectedItem.ToString().Split('-')[0]);
                T_User model = entity.T_User.Where(a => a.Id == id).FirstOrDefault();
                if (model != null)
                {
                    entity.Entry(model).State = EntityState.Deleted;
                    entity.SaveChanges();
                    Query();
                }
            }
    
            /// <summary>
            /// 修改
            /// </summary>
            private void Edit()
            {
                if (listBox1.SelectedItem == null)
                {
                    return;
                }
                int id = Convert.ToInt32(listBox1.SelectedItem.ToString().Split('-')[0]);
                T_User model = entity.T_User.Where(a => a.Id == id).FirstOrDefault();
                if (model != null)
                {
                    model.Name = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
                    entity.Entry(model).State = EntityState.Modified;
                    entity.SaveChanges();
                    Query();
                }
            }
    
            /// <summary>
            /// 查询
            /// </summary>
            private void Query()
            {
                listBox1.Items.Clear();
                var expr = from p in entity.T_User select p;
                foreach (var item in expr)
                {
                    listBox1.Items.Add(string.Format("{0}-{1}", item.Id, item.Name));
                }
            }
    
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                Add();
            }
    
            private void toolStripButton4_Click(object sender, EventArgs e)
            {
                Edit();
            }
    
            private void toolStripButton3_Click(object sender, EventArgs e)
            {
                Delete();
            }
    
            private void toolStripButton2_Click(object sender, EventArgs e)
            {
                Query();
            }
        }
    }
  • 相关阅读:
    分享一些曾经设计的ASP.NET自定义服务端控件(附源程序下载)
    使用SuperSocket实现TLV自定义协议网络通信的Demo
    让Silverlight支持GB2312中文编码
    在Sqlite中通过Replace来实现插入和更新
    在VS2010项目中引用Lib静态库(以Openssl为例)
    金融系统中PBOC/EMV的TLV的算法实现(含C++/C#)
    在Windows下C++实现UNIX中的GZ格式的解压缩(附工具)
    Opensuse网络配置备忘
    项目管理理论与实践系列文章索引
    让Windows远程访问Opensuse桌面的解决办法
  • 原文地址:https://www.cnblogs.com/cmhunter/p/4224818.html
Copyright © 2020-2023  润新知