[英]Setup query, navigation properties (Code First) in view (Entity Framework 6 + MVC 5)
[英]Entity Framework Model First Navigation Properties adding invalid column names to query?
在我们的数据库中,有以下表格
Tags
Id (int)
Name (string)
IsActive (bool)
TagType (string)
和
DocumentStyles
Id (int)
Name (string)
StyleRules (string)
IsAvailable (bool)
ThumbnailFileId (int nullable)
ConceptTagId (int nullable)
使用EF 4.2设计器,我创建了适当的实体,并试图将ConceptTagId的外键链接到Tag模型。
当我添加关联(从Tag到DocumentStyle的关联为0..1)时,它正确地链接了外键并将ConceptTag的导航属性添加到DocumentStyle对象。 我不希望Tag对象具有导航属性。
但是,在存储库中调用以下代码时
db.DocumentStyles.Include(d => d.ConceptTag).ToList();
结果查询尝试访问Tag表上的属性DocumentStyle_ID,该属性不存在,也不应该。 外键是DocumentStyle表上的ConceptTagId。
此id列从何而来,如何摆脱它?
在相关关联的属性窗口中:
End1多重性:DocumentStyle的*
End1 Nav属性:ConceptTag
End2多重性:标签之一的零
End2 Nav属性:{NULL}(在属性中为空白)
在进一步研究中,它打破了命名样式的惯例。 要解决此问题,我必须在OnModelCreating事件中实现以下规则
builder.Entity<DocumentStyle>().HasOptional(ds => ds.ConceptTag).WithMany();
这使框架能够知道Tag在关系中没有期望的倒数属性,并且它不会尝试在以后的查询中查找DocumentStyle_Id属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.