C#FE(Entity Framework)框架使用--CodeFirst模式

第一步:创建ado.net实体数据模型

第二步:选择模型内容(来自数据库的EF设计器)

三.等待20秒左右完成对象创建:

四.数据模型操作方式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;

namespace EF_Demo_01
{
    class Program
    {
        //EntityFramework (EF)ORM框架 数据库优先  
        static void Main(string[] args)
        {
            //int? num1 = null;
            //Nullable<int> num2 = null;
            //Console.WriteLine(num1.GetType());
            //Console.WriteLine(num2.GetType());

            //EF相当于强大DBHelper
            //AddProduct();//添加产品
            //DeleteProduct();//删除产品
            //ModifyProduct();//修改产品
            //ModifyProductList();//修改产品

            //表联接 外联接
            // GetProductInclude();
            //GetProductListInclude();
            //GetProductListInclude2();

            //内联接 inner join
            //GetProductJoin1();
            //GetProductJoin2();

            //Execute();//执行添加删除修改
            //ExecuteScalar();//查询单行单列
            ExecuteReader();//查询返回多行多列

            //GetProductProc();
        }

        #region EF 添加、删除、修改、简单查询(单表)
        private static void AddProduct()
        {
            Product product = new Product()
            {
                ProductName = "测试产品1",
                Price = 2000,
                Description = "产品测试描述信息",
                TypeId = 2,
                ImageUrl = "images/xxx.jpg"
            };
            //带事务处理机制 添加   对象关系映射
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                taobao.Product.Add(product);
                if (taobao.SaveChanges() > 0)
                {
                    Console.WriteLine("添加成功");
                }
            }
        }

        //CRM  3种状态  IsValid 1 正常 0 垃圾箱 -1 废弃箱 update 物理删除 
        private static void DeleteProduct()
        {
            //传进来的编号,真实项目一般不会做物理删除
            int productNo = 1005;
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                Product product = taobao.Product.Single<Product>
                    (p => p.ProductNo == productNo);
                taobao.Product.Remove(product);//对象
                if (taobao.SaveChanges() > 0)//提交持久化 commit
                {
                    Console.WriteLine("删除成功");
                }
            }
        }

        /// <summary>
        /// 修改产品
        /// </summary>
        private static void ModifyProduct()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                Product product = taobao.Product.FirstOrDefault(p => p.ProductName == "P20pro");

                product.Price = 2500;
                product.Description = "测试备注信息";

                if (taobao.SaveChanges() > 0)//提交持久化 commit
                {
                    Console.WriteLine("修改成功");
                }
            }
        }

        /// <summary>
        /// 批量修改产品
        /// </summary>
        private static void ModifyProductList()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                List<Product> productList = taobao.Product.Where(p => p.TypeId == 1).ToList<Product>();
                for (int i = 0; i < productList.Count; i++)
                {
                    productList[i].Price -= 5;
                }
                //foreach (var item in collection)//只读迭代只读循环,执行效率比较快
                //{
                //}
                if (taobao.SaveChanges() > 0)//提交持久化 commit
                {
                    Console.WriteLine("批量修改成功");
                }
            }
        }

        #endregion

        #region 跨表查询(表联接)  Include
        private static void GetProductInclude()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                Product product = taobao.Product.Include("ProductType")
                                    .Where(p => p.ProductNo == 1002).Single<Product>();
                Console.WriteLine($"{product.ProductName}-{product.ProductType.TypeName}");
            }
        }
        private static void GetProductListInclude()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                var list = taobao.Product.Include("ProductType")
                                     .Where(p => p.TypeId == 1);
                List<Product> productList = list.OrderBy(p => p.TypeId).ToList();//asc升序
                //聚合函数:统计 求平均 求最大 求最小 求和
                Console.WriteLine(list.ToList().Max(p => p.Price));
                foreach (var product in productList)
                {
                    Console.WriteLine($"{product.ProductName}-{product.ProductType.TypeName}");
                }
            }
        }
        private static void GetProductListInclude2()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                //集合刷1  对象刷2
                ProductType productType = taobao.ProductType.Include("Product")
                                     .Where(t => t.TypeId == 1).Single<ProductType>();

                Console.WriteLine($"类型:{productType.TypeName}");//一对多关系
                foreach (var product in productType.Product)
                {
                    Console.WriteLine($"{product.ProductName}-{product.ProductNo}");
                }

            }
        }

        #endregion

        #region 跨表查询  Join 内联接
        private static void GetProductJoin1()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                //select * from product a inner join producttype b on(a.typeid=b.typeid)
                var productList = taobao.Product.Join
                       (
                       taobao.ProductType,
                       a => a.TypeId,
                       b => b.TypeId,
                       (a, b) => new { a.ProductNo, a.ProductName, a.Price, b.TypeName }//投影
                       ).ToList();

                Console.WriteLine($"类型:{productList.GetType()}");
                //var   dynamic
                foreach (var product in productList)
                {
                    Console.WriteLine(product.ProductName + "-" + product.TypeName);
                }
            }
        }

        private static void GetProductJoin2()
        {
            //using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            //{
            //    //linq to sql 查询表达式
            //    List<Product> productList = (from a in taobao.Product
            //                                 join b in taobao.ProductType
            //                                 on a.TypeId equals b.TypeId
            //                                 select a)
            //                                 .ToList<Product>();//比较 equals
            //    foreach (var product in productList)
            //    {
            //        Console.WriteLine(product.ProductName + "-" + product.ProductType.TypeName);
            //    }
            //}

            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                //linq to sql 查询表达式
                var productList = (from a in taobao.Product
                                   join b in taobao.ProductType
                                   on a.TypeId equals b.TypeId
                                   select new { a.ProductNo, a.ProductName, b.TypeName })//投影信息
                                             .OrderBy(a => a.ProductNo)
                                             .ToList();//比较 equals
                foreach (var product in productList)
                {
                    Console.WriteLine(product.ProductName + "-" + product.TypeName);//DataTable
                }
            }
        }

        #endregion

        #region EF 原生态SQL脚本执行
        //添加 删除 修改
        private static void Execute()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                string sql = @"insert into ProductType(typeid,typename)
                                values(@id,@name)";
                SqlParameter[] paras = {
                    new SqlParameter("@id",5),
                         new SqlParameter("@name","测试2")
                };
                int result = taobao.Database.ExecuteSqlCommand(sql, paras);
                if (result > 0)
                {
                    Console.WriteLine("执行成功!");
                }
                else
                {
                    Console.WriteLine("执行失败...");
                }
            }
        }


        /// <summary>
        /// 查询返回第一行第一列
        /// </summary>
        private static void ExecuteReader()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                string sql = "select * from product where typeid=@typeid";
                SqlParameter[] paras =
                {
                    new SqlParameter("@typeid",1)
                };
                List<Product> productList = taobao.Database
                    .SqlQuery<Product>(sql, paras).ToList();
                foreach (var product in productList)
                {
                    Console.WriteLine(product.ProductName + "-" + product.ProductNo);
                }

                每页显示10条  pagesize *(pageindex-1)
                //List<Product> productList = taobao.Database
                //    .SqlQuery<Product>(sql, paras)
                //    .Skip(11)
                //    .Take(10)//pagesize
                //    .ToList();
            }
        }

        /// <summary>
        /// 查询返回第一行第一列
        /// </summary>
        private static void ExecuteScalar()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                string sql = "select count(1) from product where typeid=@typeid";
                SqlParameter[] paras =
                {
                    new SqlParameter("@typeid",1)
                };
                int result = taobao.Database.SqlQuery<int>(sql, paras).Single();//单个值.Single()
                Console.WriteLine(result);
            }
        }
        //查询表 + 视图 +存储过程
        public static void GetProductProc()
        {
            using (TAOBAODBEntities taobao = new TAOBAODBEntities())
            {
                SqlParameter[] paras =
                {
                    new SqlParameter("@typeid",1),//0
                    new SqlParameter("@count",SqlDbType.Int)//1 
                };
                paras[1].Direction = ParameterDirection.Output;//默认执行参数类型
                List<Product> productList = taobao.Database
                    .SqlQuery<Product>
                    ("PROC_GetProduct @typeid,@count output", paras).ToList();
                int count = (int)paras[1].Value;//获取输出参数

                Console.WriteLine($"共计:{count}");
                foreach (var product in productList)
                {
                    Console.WriteLine($"{product.ProductNo}-  {product.ProductName}");
                }
            }
        }

        #endregion


        //linq to object   
        //linq to sql
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值