一、问题描述: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表新增意外数据的巨大风险!