一起学习MVC(3)搭建项目

我们现在来搭建项目,项目使用经典的3层架构user interface,business ,dataaccess.

 首先我们搭建model模型层,这一层我们使用ado.net entity framework,我们选择类库,project名称就叫Model好了。

建好了之后,我们在项目里新增一个Ado.net Entity Data Model实体

然后按照向导完成

最终的试图

上面的图片是不是和我们数据库的关系图一致?如果不清楚数据库关系图,可以查看http://www.cnblogs.com/sobaby/archive/2009/01/19/1378178.html这篇文章

我们用editplus打开刚才建立的edmx文件(也可以用记事本打开)

你会发现该文件包含3个主要部分。

Conceptual Models (CSDL)

Storage Models (SSDL)

Mapping (MSL)

一般情况下,我们没必要手动修改EDMX -XML文件。可视化的EDM 设计器、Mapping Details窗口和Model Browser 窗口包含有上述3个部分,友好地显示整个Entity Data Model模型。

我们看一下模型浏览器(可以在上图里点右键 选中模型浏览器 来查看):

Model Browser窗口以可视的树形图显示概念模型和存储模型。

映射视图:

EDM设计提供了一个不错的映射窗口,将实体映射到表或者视图:

左边是数据库中的字段名和数据类型,右边是对应的c#里的属性名和数据类型

最后我们来看看StoreModel.design.cs文件

首先看到的是下面的代码

[assembly: global::System.Data.Objects.DataClasses.EdmSchemaAttribute()]
[assembly: 
global::System.Data.Objects.DataClasses.EdmRelationshipAttribute("StoreModel""FK_ORDERS_REFERENCE_MEMBERS""Members"global::System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(Model.Members), "Orders"global::System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Model.Orders))]
[assembly: 
global::System.Data.Objects.DataClasses.EdmRelationshipAttribute("StoreModel""FK_ORDERDET_REFERENCE_ORDERS""Orders"global::System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(Model.Orders), "OrderDetail"global::System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Model.OrderDetail))]
[assembly: 
global::System.Data.Objects.DataClasses.EdmRelationshipAttribute("StoreModel""FK_ORDERDET_REFERENCE_PRODUCTS""Products"global::System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(Model.Products), "OrderDetail"global::System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Model.OrderDetail))]

没有细看这个特性类,估计是对象实体的映射关系吧,查了一下MSDN,

第一个参数是此实体所参与的关联的命名空间名称。(不是很明白,命名空间不是Model吗?)

第二个参数是此实体所参与的关系的名称。(应该是数据库里对应的关系名吧)

第三个参数是关联一端的类型的角色名称。 (应该是主键表的表名)

第四个参数是RelationshipMultiplicity 的值,指示在关联一端的重数,例如一重或多重。(这个好理解,就是关系了,比如一对多,多对多)

第五个参数是关联一端的实体类型。(就是对应的实体名)

第六个参数关联另一端的类型的角色名称。(外键表表名)

第七个参数是RelationshipMultiplicity 的值,指示在关联另一端的重数,例如一重或多重。

第八个参数是关联另一端的实体类型。(对应的实体名)

据我的理解这就是实体的关系映射吧

我们继续看下面的代码了

public partial class b2cDBEntities : global::System.Data.Objects.ObjectContext

首先说一下System.Data.Objects和System.Data.Entity和System.Data.EntityClient这三个命名空间都是VS2008新加的,存在于System.Data.Entity.dll里(如果有错请指出来)

ObjectContext这个类提供以对象形式查询和使用实体数据的功能。

ObjectContext 类是以对象(这些对象是 Entity Data Model (EDM) 中定义的实体类型的实例)的形式与数据进行交互的主要类。ObjectContext 类的实例封装以下内容:

Entity Data Model 工具生成表示 EDM 概念性模型的对象层时,会从 ObjectContext 派生表示该模型的 EntityContainer 的类。有关更多信息,请参见对象服务概述(实体框架)

如果我们以后要用linq 2 Entities就必须要和这个类打交道。比如:

b2cDBEntities db = new b2cDBEntities();
            var query 
= from m in db.Members
                        select m;

这样就和我们在linq 2 sql里的是一样

原文地址:https://www.cnblogs.com/sobaby/p/1378195.html