使用工具:sql server 2012,vs2017
由于书籍中使用的sql server,所以在本书的学习中使用的数据库为sql servier 2012。学习之前,先将书籍中利用到的数据库附加进去。
数据分享:northwnd
链接:https://pan.baidu.com/s/1i6FSRlj 密码:fuh7
目录
1.DBFirst
2 Entity Framework增删改查
3 LINQ To EF
4 Code First 开发方式
1.DBFirst
- 首先添加实体模型(ado.net 实体数据模型),一路安装下去就可以了,并不会像连接mysql一样会遇到各种各样的问题。
- 验证安装情况
通过edmx可以看到,几张表已经加载进来了
然后通过调试再来看看数据情况,尝试从orders表中查询id为10248的订单数据:
由上图,可见对应的那条数据已经被查出来了。
2 Entity Framework增删改查
2.1 新增
在这里可以留意下方法二DbEntityEntry的使用,由于这里面的Order在数据库中有了限制,虽然设置11090,实际加入进去的还是递增1的数据加入。
2.2根据条件排序和查询
使用以下的方式进行查询,需要先引入System.Linq.Expressions;
使用这种方式,需要先了解下Experssion的以及lambda的使用方式。
方法代码:
#region 测试根据条件排序和查询
public static List<Customers> GetListBy<Tkey>(Expression<Func<Customers, bool>>
whereLambda, Expression<Func<Customers, Tkey>> orderLambda)
{
using (NorthwindEntities entity = new NorthwindEntities())
{
return entity.Customers.Where(whereLambda).OrderBy(orderLambda).ToList();
}
}
#endregion
调用方式:
static void Main(string[] args)
{
Expression<Func<Customers, bool>> whereLambda = (Customers) => Customers.CustomerID == "alen";
Expression<Func<Customers, string>> orderLambda = (Customers) => Customers.CustomerID;
var result = FunctionMethods.GetListBy<string>(whereLambda,orderLambda);
}
调用结果:
2.3 分页查询
方法代码:
#region 分页查询
public static List<Customers> GetPagedList<Tkey>(int pageIndex, int pageSize,
Expression<Func<Customers, bool>> whereLambda, Expression<Func<Customers, Tkey>> orderLambda)
{
using (NorthwindEntities entity = new NorthwindEntities())
{
return entity.Customers.Where(whereLambda).OrderBy(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
}
#endregion
调用方式:
//分页查询
Expression<Func<Customers, bool>> whereLambda = (Customers) => Customers.CustomerID.Length < 4;
Expression<Func<Customers, string>> orderLambda = (Customers) => Customers.Custom