C# 实体框架加载外键(可选)

C# 实体框架加载外键(可选),c#,linq,entity-framework,C#,Linq,Entity Framework,使用外键时是否可以加载ProjectManager this.HasOptional(t => t.ProjectManager) .WithMany() .WillCascadeOnDelete(false) 我尝试执行以下操作,但ProjectManager仍然返回为null var entities = _context.EodRecords .Include(r =>r.ProjectManager)

使用外键时是否可以加载
ProjectManager

this.HasOptional(t => t.ProjectManager)
            .WithMany()
            .WillCascadeOnDelete(false)
我尝试执行以下操作,但ProjectManager仍然返回为
null

var entities = _context.EodRecords
            .Include(r =>r.ProjectManager)
            .Include(r => r.RecordLanguages)
            .Include(r => r.Department);

您似乎没有指定外键

this.HasOptional(t => t.ProjectManager)
    .WithMany()
    .HasForeignKey(t => t.ProjectManagerId)
    .WillCascadeOnDelete(false);

基于你的错误

Context.Record\u ProjectManager::多重性与关系“Record\u ProjectManager”中角色“Record\u ProjectManager\u Target”中的引用约束冲突。因为从属角色中的所有属性都不可为null,所以主体角色的多重性必须为“1”

确保您的FK可为空

public virtual int? ProjectManagerId { get; set; }

为什么这会有不同?可能甚至没有
ProjectManagerId
,OP可能会选择独立关联(尽管不推荐)。@GertArnold我的假设是OP正在使用FKs,但只是没有指定关系。在他的情况下,也可能是该属性没有声明为
virtual
(不知道,因为他没有给我们看他的代码)。同时显示完整的查询,因为您选择的内容会影响
Include
是否执行任何操作