• 《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射


    转载于: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为什么能将实体中“属性”的数据映射到表中的“字段”里面去的。

      

  • 相关阅读:
    更改修改VS Visual Studio debug默认调试浏览器
    网页特效:随浏览器滚动条移动的DIV层
    IIS7,WINDOWS2008运行.net2.0等版本程序出现这个错误。
    项目所需的应用程序未安装,确保已安装项目类型(.csproj)的应用程序的解决办法[转]
    C#WINFORM控件之ComboBox
    页面编码和js文件不同导致的IE6下脚本错误
    程序越写越难控制。
    .net页面事件顺序
    未能加载文件或程序集
    # ACwing 902最短编辑距离 (线性dp)
  • 原文地址:https://www.cnblogs.com/likui-bookHouse/p/7343965.html
Copyright © 2020-2023  润新知