entity framework模型第一个导航属性添加无效的列名称进行查询?

在我们的数据库中,我们有以下表格

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 Multiplicity:* DocumentStyle
End1 Nav属性:ConceptTag
End2 Multiplicity:标签之一为零
End2 Nav属性:{NULL}(在属性中为空)

在进一步调查中,它打破了命名风格的惯例。 要解决此问题,我必须在OnModelCreating事件中实现以下规则

 builder.Entity().HasOptional(ds => ds.ConceptTag).WithMany(); 

这允许框架知道Tag在关系中没有期望的互惠属性,并且它不会在将来的查询中尝试查找DocumentStyle_Id属性