基于VS2015、EF6连接Sqlite,Linq和部分lambda实现数据库数据的基本增删改查

首先引用管理Nuget包,将所需要的EntityFramework包以及Sqlite的包下载好,

基于VS2015、EF6连接Sqlite,Linq和部分lambda实现数据库数据的基本增删改查_第1张图片

只需要下载SQlite包,其他的依赖包会自动下载。

之后会自动生成一个app.config配置文件

但是在原本生成的config文件中没有

另外数据库连接语句:这里data source可以写绝对路径,也可以直接写SqliteTest.db,但此时db文件必须放在项目的bin\debug文件夹当中。


    
  

完整的config文件



  
    
    

config文件配置好后,在VS中编写表的对应表名(实体类),实体类表中属性需要和数据库中完全一致,在这里遇到一个小问题,查询时不区分大小写,但是增删改时,严格区分。

//特性 -引用名为Person的表名
    //[Table("Actor")]
    //Actor(数据库的表名)
    public class Actor
    {
        public Int64 ID { get; set; } //注意要用Int64
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

 public class Countries
    {
        //数据库中countries的实体类
        public Int64 ID { get; set; } 
        public string Name { get; set; }
        public Int64 Cost { get; set; }
    }

这里需要注意的是,因为在数据库中表名是以复数形式存在的,比如我们在代码的实体类和数据库的表名都取为Actor,这时虽然数据库表名显示的是Actor,但是它默认是以Actors形式存在,所以我们在查询的时候就会出现异常

两种解决方案:

1.将数据库的表名直接改为Actors(复数形式)

2.使用特性,直接将数据库的表名写死

编写上下文

 public class TestContext : DbContext
    {
        //数据上下文,创建Actor的表对象
        //数据库中的表名是以负数形式来进行表现的(比如这里dbset建表为actor,那么数据库中必须为actors才能正确查询)
        public DbSet Actors { get; set; }

        public DbSet Countries { get; set; }

        /// 
        /// 定义构造函数,继承自父类的构造函数,通过继承父类的构造函数来创建数据库
        /// 父类构造函数的参数是配置文件中配置的数据库连接字符串
        /// 
        public TestContext(): base("SqliteTest")
        {

        }
    }

数据库内容

然后连接数据库,根据自己的数据库进行选择和连接。(如果测试数据库是放在bin\debug文件中,可以忽略此步骤)

基于VS2015、EF6连接Sqlite,Linq和部分lambda实现数据库数据的基本增删改查_第2张图片

连接好后,进行增删改查,直接在主函数调用方法就可以了

//查询内容
        public static void select()
        {
            using (TestContext mc = new TestContext())
            {
                //var mcmc = mc.Person.Where(p => p.FirstName == "阿达").Select(p => p.LastName);
                //linq语句查询
                var linq = from n in mc.Actors
                           where n.ID == 4
                           select n.FirstName + " " + n.LastName;
                //lambda语句查询
                var lambda = mc.Actors.Where(p => p.ID == 4).Select(p => p.FirstName);
                foreach (var item in lambda)
                {
                    Console.WriteLine(item);
                }
                Console.ReadLine();
            }
        }

        //添加内容
        public static void add()
        {
            using (TestContext mc = new TestContext())
            {
                Actor a = new Actor();
                a.ID = 6;
                a.FirstName = "chen";
                a.LastName = "long";
                mc.Actors.Add(a);
                mc.SaveChanges();
            }
            Console.WriteLine("add successfully!");
            Console.ReadLine();
        }

        //删除内容
        public static void remove()
        {
            using (TestContext mc = new TestContext())
            {
                var result = from n in mc.Actors
                             where n.ID == 5
                             select n;
                foreach (var item in result)
                {
                    mc.Actors.Remove(item);
                }
                //必须savechange否则不会成功
                mc.SaveChanges();
                Console.WriteLine("Delete successfully");
                Console.ReadLine();
            }
        }
        //修改内容
        public static void modify()
        {

            using (TestContext mc = new TestContext())
            {
                //修改指定查询到的内容
                var result = from n in mc.Actors
                             where n.ID == 4
                             select n;
                foreach (var item in result)
                {
                    item.FirstName = "修改";
                }

                ////修改查询多条内容中的第一条内容
                //var result1 = from n in mc.Actors
                //             select n;
                //var target=result1.FirstOrDefault();
                //target.LastName = "修改111";

                //必须savechange,否则不会成功
                mc.SaveChanges();
                Console.WriteLine("Modify successfully");
                Console.ReadLine();
            }
        }

具体的增删改查可以参考和对照博客:http://www.cnblogs.com/Elijah/archive/2012/01/04/2311468.html,老师写得非常详细。

你可能感兴趣的:(基于VS2015、EF6连接Sqlite,Linq和部分lambda实现数据库数据的基本增删改查)