转载于:http://blog.csdn.net/zhoukun1008/article/details/50528145

现在越来越喜欢MVC了,不光是因为ITOO中用到了他,而是因为它里面包含了很多的知识点让我们去学习,我们的ITOO在服务端用到了EF和WCF,而对于MVC来说,他也可以与EF合作操作数据库,也可以像WebForm一样为用户显示数据。下面我总结一下用DBFirst来创建实体数据库模型。

1、新建ASP.NET MVC 4 Web 应用程序

2、创建空的模板

3、创建ADO.net实体数据模型(在Model文件件下右击——>添加——>新建项——>数据——>ADO.Net实体数据模型)

4、选择来自数据的EF设计器(这里选择的就是DBFirst)

5、点击新建连接,创建新的数据连接。

6、填入服务器名称(可以是自己你的IP,也可以是自己的用户名,我这里用“.”来代替,代表本地)

7、继续点击下一步,选择实体框架的版本。

8、导入适当的表【视图、存储过程和函数】,我这里只导入了表。点击完成就OK了。

9、对象关系映射

上面的几部操作完成后,右击edmx文件,选择打开方式,用XML(文本)编辑器打开。这样,我们就可以看见数据库中的表与C#中的实体类中的数据,以及他们是如何映射的啦!

    看一下这个XML文件的主要组成吧!

首先是数据库中BlogArticleCate表的数据

  1. <EntityType Name="BlogArticleCate">
  2. <Key>
  3. <PropertyRef Name="Id" />
  4. </Key>
  5. <Property Name="Id" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
  6. <Property Name="Author" Type="int" Nullable="false" />
  7. <Property Name="Name" Type="nvarchar" MaxLength="50" Nullable="false" />
  8. <Property Name="Remark" Type="nvarchar" MaxLength="200" />
  9. <Property Name="Statu" Type="int" Nullable="false" />
  10. <Property Name="IsDel" Type="bit" Nullable="false" />
  11. <Property Name="Addtime" Type="datetime" Nullable="false" />
  12. </EntityType>

Csharp中BlogArticleCate实体类的数据

  1. <EntityType Name="BlogArticleCate">
  2. <Key>
  3. <PropertyRef Name="Id" />
  4. </Key>
  5. <Property Name="Id" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
  6. <Property Name="Author" Type="Int32" Nullable="false" />
  7. <Property Name="Name" Type="String" MaxLength="50" FixedLength="false" Unicode="true" Nullable="false" />
  8. <Property Name="Remark" Type="String" MaxLength="200" FixedLength="false" Unicode="true" />
  9. <Property Name="Statu" Type="Int32" Nullable="false" />
  10. <Property Name="IsDel" Type="Boolean" Nullable="false" />
  11. <Property Name="Addtime" Type="DateTime" Nullable="false" Precision="3" />
  12. <NavigationProperty Name="BlogArticles" Relationship="Self.FK_BlogArticle_BlogArticleCate" FromRole="BlogArticleCate" ToRole="BlogArticle" />
  13. <NavigationProperty Name="BlogUser" Relationship="Self.FK_BlogArticleCate_BlogUser" FromRole="BlogArticleCate" ToRole="BlogUser" />
  14. </EntityType>

数据库中的表与实体之间的对应关系

  1. <EntitySetMapping Name="BlogArticleCates">
  2. <EntityTypeMapping TypeName="OumindBlogModel.BlogArticleCate">
  3. <MappingFragment StoreEntitySet="BlogArticleCate">
  4. <ScalarProperty Name="Id" ColumnName="Id" />
  5. <ScalarProperty Name="Author" ColumnName="Author" />
  6. <ScalarProperty Name="Name" ColumnName="Name" />
  7. <ScalarProperty Name="Remark" ColumnName="Remark" />
  8. <ScalarProperty Name="Statu" ColumnName="Statu" />
  9. <ScalarProperty Name="IsDel" ColumnName="IsDel" />
  10. <ScalarProperty Name="Addtime" ColumnName="Addtime" />
  11. </MappingFragment>
  12. </EntityTypeMapping>
  13. </EntitySetMapping>

看看上面的对应的关系,一个实体类中的属性相对应着数据库表中的一个字段,还有他们分别在C#类中、表中各自的数据类型。正是有了上面的一一对应关系,我才明白:当我们用EF操作实体类中的数据的时候,EF为什么能将实体中“属性”的数据映射到表中的“字段”里面去的。

《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射的更多相关文章

  1. Visual 2015创建新项,缺少ADO.NET 实体数据模型的解决方法

    现在的某度查资料真的很麻烦,突然我自身的VS2015创建EF的时候找不到 ADO.NET 实体数据模型,但是使用CodeFrist是可以生成数据表的.所有特别郁闷. 打开界面如下 某度半天,都没有查出 ...

  2. Model First:创建实体数据模型(ADO.NET 实体数据模型)

    Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具.它可以让你从一个数据库自动地生成数据接入层.实体框架免 ...

  3. vs212创建mvc3项目,添加ADO.NET实体数据模型时产生 XXXX.Desiger.cs 文件为空

    vs212创建mvc3项目,发现添加ADO.NET实体数据模型时,产生StoreDB.Desiger.cs文件为空 产生StoreDB.Desiger.cs文件为空 原因是,在vs2012中,添加AD ...

  4. 连接SQLite 创建ADO.net实体类

    0.开发环境 win10,vs2013-x64 1.安装: sqlite-netFx451-setup-bundle-x86-2013-1.0.102.0.exe 注意事项:选在VisualStudi ...

  5. Entity Framework (EF) Core工具创建一对多和多对多的关系

     一. EntirtyFramework(EF)简介 EntirtyFramework框架是一个轻量级的可扩展版本的流行实体框架数据访问技术,微软官方提供的ORM工具让开发人员节省数据库访问的代码时间 ...

  6. ADO.NET实体数据模型使用探索1

    今天研究了下ADO.NET实体数据模型,想写个关于两张有外键关系的增改删查,以此来稍增加点难度. 编程环境:vs2010+sql2005 1.在SQL2005下建立三张表:学生信息表Student(S ...

  7. Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源

    熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件. 但是这个模型向导默认只显示微软 ...

  8. ADO.NET实体数据模型中关于数据库字段默认值的处理

    无论是Visual Studio 2010或者2013内置的ADO.NET实体数据模型都有一个小问题:数据库中有些字段已设置了默认值,但ADO.NET实体数据模型工具并不会自动进行设置. 这时需要手工 ...

  9. Visual Studio2017中如何让ADO.NET实体数据模型[EntityFramework]支持MariaDB&MySQL数据源

    近期由于工作需要,需要重新修改设计系统的ADO.NET实体数据模型.edmx文件中间,在完成实际中途遇到一些实际使用问题,特此记录. 1. Visual Studio 2017 无法以实体设计模式打开 ...

随机推荐

  1. socket心跳超时检测,快速处理新思路(适用于超大量TCP连接情况下)

    假设一种情景:TCP服务器有1万个客户端连接,如果客户端5秒钟不发数据,则要断开.服务端如何检测客户端是否超时?这看起来是一个非常简单的问题,其实不然! 最简单的处理方法是:启动一个线程,每隔一段时间 ...

  2. Vue笔记:在项目中使用 SCSS

    背景概述 1. CSS预处理器 css预处理器定义了一种新的编程语言,编译后成正常的CSS文件.为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代 ...

  3. 第三方登录:新浪微博登录(OAuth2.0)

    在<Github第三方登录--通用化的第三方登陆实现>中我们实现了一个通用化的第三方登录框架,其中包括OAUth的基本流程以及最简单的用户注册.但是不同的第三方登录因为其细节不同还是有很多 ...

  4. Leetcode 746. Min Cost Climbing Stairs

    思路:动态规划. class Solution { //不能对cost数组进行写操作,因为JAVA中参数是引用 public int minCostClimbingStairs(int[] cost) ...

  5. Tomcat学习总结(12)—— Tomcat集群配置

    现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问量过大,就会出现服应用务器崩溃的情况,这个时候怎 ...

  6. C字符串

    C字符串 C中的字符串是以空字符('\0')结尾的一个char数组,基本的实现字符串的方法有:字符串常量,字符串数组,char数组,char指针.字符串使用广泛,如与用户交互等处理自然语言的情况.C为 ...

  7. [Angularjs]cookie操作

    摘要 现在很多app采用内嵌h5的方式进行开发,有些数据会存在webveiw的cookie中,那么如果使用angularjs开发单页应用,就需要用到angularjs的cookie操作.这里提供一个简 ...

  8. 关于使用$.ajax调用ashx文件和$.post调用ashx使用中遇到的问题

    同样返回 int i = 1; string strJson = "{\"result\":" + i + "}"; context.Res ...

  9. SQL Server无法打开物理文件,操作系统错误 5:"5(拒绝访问。)的解决办法

    在新装的系统中使用SQL Server附加以前的数据库的时候可能会遇到“无法打开物理文件,拒绝访问”的错误,如下图: 解决方法为使用windows验证登录,或者更改SQL Server内置账户类型为L ...

  10. Java多线程--线程及相关的Java API

    Java多线程--线程及相关的Java API 线程与进程 进程是线程的容器,程序是指令.数据的组织形式,进程是程序的实体. 一个进程中可以容纳若干个线程,线程是轻量级的进程,是程序执行的最小单位.我 ...