• [转载]使用ADO.NET EntityFramework实体模型类


    原文地址:http://www.cnblogs.com/snowdream/archive/2009/08/04/analyse-why-entity-classes-less-than-data-tables.html

    在通过数据库生成ADO.NET Entity Data Model(实体数据模型)时可能会出现生成的实体类个数少于数据表个数的情况。以下介绍两种可能会碰到这种情况的原因。
    1. 数据表的所有列都可为空。
    当数据表有主键时,实体数据模型中会把主键作为实体键来标识一个实体,如果数据表不含主键,则所有不可空的列都是实体键,它们共同来标识一个实体。当数据表的所有列都可空的时候,无法标识一个实体,所以实体数据模型中就不包含这个实体类了的。只需要给该表加一个主键或不可空的列就会出现在实体数据模型中。另外,在使用ADO.NET Entity Framework时不含主键的表比较容易出现一些奇怪的错误,尽量为每个表设置一个主键。

    2. 数据表的所有列都是外键
    当数据表中所有的列都是外键时,实体数据模型会智能地将这些关系中的主键表直接通过导航属性相连。
    下面举一个例子。Account表和AccountPermission表存在外键关系,Account表的ID是主键,AccountPermission表的AccountID是外键。Permission表和AccountPermission表存在外键关系,Permission表的PermissionID是主键,AccountPermission表的PermissionID是外键。数据库关系图如下

    这是AccountPermission表不会出现在实体数据模型中,Account表和Permission表直接通过导航属性。

    这样是正常的,在使用上也不会有不便,只是初学者可能会觉得丢失了一个数据表。实际上只要将PermissionID看成是Account的一个属性,就可以理解这样的变换了。此时如果要修改AccountPermission表中PermissionID的值,不可以简单地Account.Permission.Permission=(修改后的值),而是应该先select出一个PermissionID=(修改后的值)的Permission实体,然后将这个实体作为Account的Permission实体。

  • 相关阅读:
    TCP三次握手(建立连接)/四次挥手(关闭连接)
    STL
    Hadoop- 集群时间同步
    Hadoop- MapReduce在实际应用中常见的调优
    Hadoop- HDFS的Safemode
    Hadoop- 分布式资源管理YARN架构讲解
    Hadoop- Hadoop详解
    Linux- Linux自带定时调度Crontab使用详解
    Spark- Spark Yarn模式下跑yarn-client无法初始化SparkConext,Over usage of virtual memory
    Zeppelin- Linux下安装Zeppelin
  • 原文地址:https://www.cnblogs.com/ilooking/p/4093430.html
Copyright © 2020-2023  润新知