LINQ to SQL和 Entity Framework 的区别
LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射(ORM)技术。他们之间的本质区别在于Entity Framework对数据库架构和查询的类型实行了更好的解耦。使用Entity Framework,查询的对象不再是完全对应数据库架构的C#类,而是更高层的抽象:Entity Data Model。这提供了额外的灵活性,但是在性能和简单性上面也会有所损失。具体二者之间的区别如下:
1.LINQ to SQL所支持的特性比较少,EntityFramework支持的特性比较多.
2.LINQ to SQL在数据表与类之间提供了一对一的映射。如果有Customers,Orders, 和Lineitems表,就会有Customer,Order, 和Lineitem类来匹配每一个表。EntityFramework可以使你有一个Customer类,而这个类可以匹配多个表。这就意味着公司名可以 在一个表中,但是地址是在另一个表中,而电话号码又在另一个表中.
3.LINQ to SQL只支持Microsoft SQL Server 2000及之后的版本。EntityFramework可以支持IBMDB2, Sybase SqlAnywhere, Oracle, SQLAzure等。
4.微软在发布了Entity Framework之后就停止了发布新的LINQ to SQL,但由于LINQto SQL的简单性,它还是很受欢迎的,所以微软仍将继续对LINQto SQL的用户进行支持与反馈,但是LINQto SQL将不再发布新版本进行完善。
生成数据模型
本demo 以vs2017的console application为例。
1. 新建空的项目
2. 右键添加ADO.NET Entity Data Model