zoukankan      html  css  js  c++  java
  • [转载]使用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实体。

  • 相关阅读:
    子页面向父页面传值
    UEditor的使用方法
    MVC 生成PDf表格并插入图片
    简单行列转换记录
    此数据库没有有效所有者“的解决,我很受用
    ASP.NET MVC3 使用kindeditor编辑器获取不到值
    c#读写文件
    VB 中Sub和Function的区别
    问题集
    hadoop2.7.2运行例子时报错
  • 原文地址:https://www.cnblogs.com/ilooking/p/4093430.html
Copyright © 2011-2022 走看看