zoukankan      html  css  js  c++  java
  • ModelFirst开发

    首先介绍一下ModelFirst开发方式,什么时候才用呢!在没有数据库时,可以借助EF设计模型,然后根据模型同步完成数据库中表的创建,这就是Model First开发方式,简而言之就是先有模型再有表。

    首先是添加ADO.NET 实体模型,然后选择空模型,再然后创建实体,添加字段,切记一定要添加主键,主键既可以是自增长的数字类型,也可以是Guid类型

    然后就是添加字段,除主键外的字段叫添加标量属性,在设计标量字段时一定要记得设计其最大范围,不然会严重影响性能

    添加实体,也就是表的关系,步骤是单击工作面板空白处新增——>关联,在添加关联对话框中进行设置,其中值得注意的是导航属性不要去掉,因为后面用他来查询将会变得非常方便

    导航属性,顾名思义就是根据这个属性可以找到一个和他关联的对象实体。

    这些以上步骤完成,按Ctrl+s组合键保存,vs会自动生成三个类

    然后右击工作空白区,根据模型生成数据库,并执行SQL脚本创建数据库

    然后我们进行代码测试:

     1      #region 增加方法
     2 
     3 
     4         static void AddTestData()
     5         {
     6             using (ModelFirstModelContainer db = new ModelFirstModelContainer())
     7             {
     8                 Customer _Customer = new Customer { Name = "楚留香", Age = 25, CompanyName = "大旗门", Telphone = "18720671285" };
     9                 Order _Order = new Order { Amount = 15, CreateTime = DateTime.Now, OrderNo = "20170624", CustomerID = _Customer.ID };
    10                 Order _Order2 = new Order { Amount = 16, CreateTime = DateTime.Now, OrderNo = "20170625", Customer = _Customer };
    11                 Product _Product = new Product { ID = Guid.NewGuid(), Name = "牛栏1段", Price = 14, Weight = 22, Customer = new List<Customer>() { _Customer } };
    12 
    13                 db.Customer.Add(_Customer);
    14                 db.Order.Add(_Order);
    15                 db.Order.Add(_Order2);
    16                 db.Product.Add(_Product);
    17 
    18                 if (db.SaveChanges() > 0)
    19                 {
    20                     Console.WriteLine("添加成功!");
    21                 }
    22                 else
    23                 {
    24                     Console.WriteLine("添加失败!");
    25                 }
    26             }
    27         }
    28         #endregion
    View Code
     1  #region 查询方法
     2         static void SearchCusOrder()
     3         {
     4             using (ModelFirstModelContainer db=new ModelFirstModelContainer())
     5             {
     6                 //var _OrderList = from o in db.Order
     7                 //                 where o.Customer.Name == "楚留香"
     8                 //                 select o;//先查Order表信息,然后直接通过导航属性customer来过滤  导航属性查询
     9                 var _OrderList1 = from c in db.Customer join o in db.Order on c.ID equals o.CustomerID where c.Name == "楚留香" select o;//通过Join查询
    10 
    11                 Console.WriteLine("客户楚留香的所有订单如下:");
    12                 _OrderList1.ToList().ForEach(o=>Console.WriteLine(string.Format("订单号:{0},订单金额:{1},订单创建时间:{2}",o.OrderNo,o.Amount,o.CreateTime)));
    13                 Console.ReadKey();
    14             }
    15         }
    16         #endregion
    View Code

    其中新增方法中db.SaveChanges()默认是已经开启了事务的,而且在这之前都只进行了一次数据库的连接,这种类似批处理的操作大大地提升了性能

    查询方法中用了两种查询方法。一种是导航属性查询,另一种就是join查询

    其中导航属性查询相当于SQL中的子查询,join查询就相当于SQL中的Inner join查询一样,在数据量大的情况下使用导航属性查询,在数据量不大的情况下就使用join查询

    以上的开发环境是vs2012+SQL2012

  • 相关阅读:
    ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
    纷享集成API函数注意点
    纷享开发注意事项:
    Oracle操作表的常见语法
    数据库中的自连接怎么理解
    decode()和SQL语法case表达式
    浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断
    vue-seamless-scroll 无缝滚动
    vue 实现表格无缝滚动
    echarts5 在vue3 中tooltip显示不出来
  • 原文地址:https://www.cnblogs.com/liuhuimh/p/7073892.html
Copyright © 2011-2022 走看看