• EntityFramework Core (一)记一次 .net core 使用 ef 6


    使用传统的sql去操作数据库虽然思路更加清晰,对每一步数据库读写操作都能监控到,但是对大数据存储,或存储规则复杂的程序就需要编写大量的SQL语句且不易维护。.orm大大方便了复杂的数据库读写操作, 让代码编写更易读,而且使用orm的很多特性可免去对数据库的一些维护操作。

    第一步:安装Nuget包我这里连接的是SQL server数据库,这两个就够用了。

    第二步:配置连接字符串,我这边引用了,System.Configuration.ConfigurationManager这个包,这样再.net core 程序里也可以像 传统framework那样读取配置

        public class RequestDataDBContent : DbContext
        {
            public DbSet<RequestData> RequestData { get; set; }
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                //注入Sql链接字符串
                optionsBuilder.UseSqlServer(System.Configuration.ConfigurationManager.ConnectionStrings["Data"].ConnectionString);
            }
     
        }

    连接字符串没有特殊要求,根据不通数据库配置provider

       <connectionStrings>        
            <add name="Data" connectionString="DATA SOURCE=Host;Initial Catalog=DBName;USER ID=sa;PASSWORD=Password;" providerName="System.Data.SqlClient" />
        </connectionStrings>

    接下来就要配置实体,跟数据库关联上下文了,这一步有许多小细节需要注意,不然很容易报错。

        [Table("Data")]  //这里用table指定数据库表名,这里是不需要家dbo的,加了反而报错, 不指定table也可以,一般默认数据库表名与实体名相同,传统ef配置了自动生成表的话,数据库表名默认为实体名的复数形式。。
        public class RequestData
        {
            [Key]//指定主键,使用ef实体必须有主键
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]//我这里设置了自增长主键
            public int id { get; set; }
            public string did { get; set; }
    
            public DateTime utime { get; set; }
    
            public string pid { get; set; }
    
            public string type { get; set; }
    
            public string addr { get; set; }
    
            public string addrv { get; set; }
    
            public DateTime ctime { get; set; }
    
        }
                                                                                                            

    数据库上下文代码

        public class RequestDataDBContent : DbContext
        {
            public DbSet<RequestData> RequestData { get; set; }
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                //注入Sql链接字符串
                optionsBuilder.UseSqlServer(System.Configuration.ConfigurationManager.ConnectionStrings["Data"].ConnectionString);
            }
    
     
        }

    这里就配置好了实体部分,接下来就是使用了

    这里列举简单的查询,新增操作

                //创建数据库上下文
    RequestDataDBContent db = new RequestDataDBContent(); foreach (Entity item in entityList) { item.did = requestBody.did; item.utime = requestBody.utime; //去除重复数据,使用linq从数据库查询重复数据 int i = (from q in db.RequestData where q.id == item.id select q).Count(); if (i > 0) { continue; }

    //实体添加至当前数据库缓存 db.RequestData.Add(item); }
    //批量提交至数据库 db.SaveChanges();

    使用ef简单的操作就像这样就结束了。

    在使用如果报错,说什么数据库对象不存在等等,这是需要关注下数据库中的表是否已建好。或者配置自动创建表。

  • 相关阅读:
    59
    58
    57
    56
    55
    54
    53
    转 Using $.ajaxPrefilter() To Configure AJAX Requests In jQuery 1.5
    jquery用正则表达式验证密码强度
    什么是高内聚、低耦合?(转载)
  • 原文地址:https://www.cnblogs.com/motion/p/15268482.html
Copyright © 2020-2023  润新知