zoukankan      html  css  js  c++  java
  • Winform--数据库链接(EF CodeFirst)

    写web程序写到一定的瓶颈了,就想换种技术深入的写写。看能不能提高自己。选择了winform 和python。这两个的学习笔记都会记录分享。

    不管winform还是web还是WebService还是WebApi都得与数据库打交道。现在关系性数据库应用越来越广泛。这里就选择了EF。有的人说EF太"重",不是轻量级的。

    这里想说很多时候是自己水平不行,不是EF不行。当然EF不能解决所有的数据存储查询问题,但是它绝对能解决大部分问题。由于是学习,不指定需求。所以就使用CodeFirst设计模式。

    由于水平有限,有时候理解不到位。请大家多多指正。

         1:  新建一个类库,取名字叫EFSql 。NuGet EF 6.0 以上的版本。(^_^5.0的版本我的EF命令通不过)

         2:新建一个类。取名为:SqlDbContext 内容如下:

              

    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Data.Entity.ModelConfiguration.Conventions;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace EFSql
    {
        public class SqlDbContext : DbContext
        {
            public SqlDbContext() : base("DefaultConnection") { }
    
            public DbSet<Model.UserInfo> UserInfos { get; set; }
    
            public DbSet<Model.TeamInfo> TeamInfos { get; set; }
    
            public DbSet<Model.TableInfo> TableInfos { get; set; }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            }
        }
    }
    

      其中  modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 去除注册变量的S。不然在数据库用生成的表就会带上S。构造函数中的"DefaultConnection" 是启动项目中配置文件中的链接字符串。

          3:新建一个Model类库。 引用 using System.ComponentModel.DataAnnotations 这个类库。

            举个类的例子如下:

            

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Model
    {
        public class UserInfo
        {
            [Key]
            [Required]
            public string userCode { get; set; }
            [MaxLength(36)]
            [Required]
            public string userName { get; set; }
            [MaxLength(8)]
            [Required]
            public string userPassword { get; set; }
    
            public DateTime? lastLoginTime { get; set; }
        }
    }
    

      必须指定Key。非必选字段类型添加上?。字符串类型必须指定长度。就如上面的例子userCode 没有指定长度。在数据库种生成的字段长度为128位。实际36位就可以了。

          4: 在Visual Studio 中 选择 "工具" ——> "NuGet程序管理器"——>"程序包管理控制台".会出现命令界面:

                输入:enable-migrations  add-migration  

          5: 如果新建了类,或者修改了原有类的结果使用 update-database 。更多的命令参考官网。

          这样就搭建完了与数据链接的整体。  

              

  • 相关阅读:
    PostgreSQL缺省值
    PostgreSQL表的基本概念
    PostgreSQL调用函数
    4.2. PostgreSQL值表达式
    3.5. PostgreSQL继承
    3.4. PostgreSQL事务
    3.3. PostgreSQL外键
    3.2. PostgreSQL视图
    碰撞
    骨骼
  • 原文地址:https://www.cnblogs.com/duchyaiai/p/8391256.html
Copyright © 2011-2022 走看看