zoukankan      html  css  js  c++  java
  • EF 外键不显示、如何让外键显示!增、删、改 操作时,外键不显示,只显示导航属性!

    一、问题描述:EF 外键不显示、如何让外键显示!增、删、改 操作时,外键不显示,只显示导航属性!

    EF 添加、增加、插入数据时,外键不显示!

    二、解决方案:在根据数据库生成模型的时候,选中“在模型中”包括外键列!

    情况1:如果你的模型和数据库完全一致,即你没有在模型中添加、修改、删除 数据库没有的属性、键、导航属性等;

    那么你可以把模型里的表和视图都删了,再从数据库更新模型,选中你所有需要的表和视图。

    情况2:如果你的模型和数据库不一致,即你在模型中有 添加、修改、删除数据库没有的属性、键、导航属性等;

    那么先从模型中“仅仅”删除需要“包括外键列”的表,再从数据库更新模型,选中表。

    问题根本:EF始乱终弃的默认设置:

    在第一次从数据库更新模型的时候,会默认会勾选;

    但当你在数据库里新建了一张表,再次从数据库更新模型的时候,不会默认勾选。

    你一不留神,就会被EF这始乱终弃的默认设置给带入坑里!在下被坑了两天才爬出来。

    三、延伸问题: 不知道的人,可能误以为EF实体模型 根本无法“包括外键列”,而进入另一个死循环:

    在添加数据时,将对象直接赋值给对象;

     var temp= {Name:“小明”,ClassID:2}

     var  student= new T_Student();

     var class= db.T_Class.Where(d=>d.ClassID=temp.ClassID).FirstOrDefault();

     student.Name=temp.Name;

     student.Class= class;

    这种方案,在一般情况可能测不出问题;但是,千万不要这么做!!!

    它潜在着导致 T_Class表新增意外数据的巨大风险!

  • 相关阅读:
    linux内存不足时,为了防止报错,可以使用swap
    Linux SWAP 深度解读
    tomcat启用apr需要的三个组件(缺少可能会报错)
    阿里云无法ping通解决
    linux安装jdk环境
    linux下如何彻底删除mysql
    如何让百度收录自己的网站
    [SWF]在线预览文档下载
    [C#]线程处理
    [C#]关键字
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/10783011.html
Copyright © 2011-2022 走看看