繁体   English   中英

实体框架模型第一个导航属性添加了无效的列名来查询吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM