LINQ to Entities学习笔记(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yanzhibo/article/details/18135757

简介:

LINQ to Entities是Entity Framework的一部分并且取代LINQ to SQL作为在数据库上使用LINQ的标准机制。


微软把开发重点从LINQ to SQL转移到了LINQ to Entities,并且宣布LINQ to SQL不再提供更新,LINQ to SQL现在仍被支持但不推荐。


生成数据模型:

Entity FrameWork依赖于一个数据模型来使用LINQ to Entities进行查询。表中的行被转换为C#对象的实例,表中的列是这些对象的属性。数据库架构和数据模型对象的映射是Entity FrameWork的核心,同时也是LINQ to Entities能够工作的根本。


生成模型的步骤:

右击App_Code目录,单击“添加新项”,从项目模板里选择“ADO.NET实体数据模型”。设置要创建的文件的名称后,单击“确定”按钮。

可以选择生成一个空的模型,然后手工增加类,然后根据模型生成数据库。

还可以从一个已经存在的数据库生成模型,在“实体数据模型向导”里选择“从数据库生成”并配置数据库连接。可以选择要包含在数据模型里的数据库表、视图和存储过程。应该选择全部表并选中“确定所生成对象的单复数形式”选项。

vs会为你选择的数据库元素创建模型图。项目会自动生成两个文件:

    Model.edmx。这个XML文件定义数据模型的架构。

    Model.Designer.cs。这个C#代码文件包含数据模型的映射对象。

数据模型类 Model.Designer.cs

你不应该手动更改Model.Designer.cs文件,因为这个文件的内容会被数据模型重新生成,从而造成修改丢失。

该文件包含两端代码区域:Contexts和Entiteis。

1.派生的对象上下文类

  Model.Designer.cs文件中定义的第一个类从ObjectContext派生。

  这个类有3个构造函数,默认空的构造函数,使用生成实体数据模型时配置的连接字符串进行连接。

  还可以使用带String参数的数据库连接字符串构造,还可以使用带EntityConnection参数的数据库连接对象进行构造。

  派生的ObjectContext类包含了数据模型中包含的每个表的属性。每个属性都是一个强类型的ObjectSet。具体类型为它引用的实体类的类型。

  

  示例:

 

public partial class Default : System.Web.Page{

	protected void Page_Load(object sender, EventArgs e){

		NorthwindEntities enty = new NorthwindEntities();

		// 把所有国家为中国的职员查询显示到GridView。

		IEnumerable<Employee>emp = from e inenty.Employees
								 where e.country.StartsWith("中国")
								 select e;

		GridView1.DataSource = emp;

		GridView1.DataBind();

		// 把所有国家为中国的职员的ID和姓显示到GridView。

		// 注意这里用了var声明,因为select时只查询了ID和FirstName,不能使用IEnumerable<Employee>

		varemp2 = from e inenty.Employees                          
			where e.country.StartsWith("中国")                          
			select new{ID = e.ID,FirstName=e.FirstName};

		GridView2.DataSource = emp2;

		GridView2.DataBind();

	}
  }



2.实体类

  用于把数据库表的记录映射到C#对象。如果选中了“确定所生成对象的单复数形式”选项,那么像Employees这样的表创建的实体对象名称是Employee

  每个实体对象包含如下内容:

  一个工厂方法:可以通过调用默认的构造函数或工程方法来创建实体对象的新实例。

  字段属性:实体对象为它们派生的数据库表的每个列包含一个字段属性。

  导航属性:如果数据模型中包含了外键关系,实体对象就会包含帮助访问关联数据库的导航属性。


展开阅读全文

没有更多推荐了,返回首页