Entity framework 实体框架-该属性不能配置为导航属性

Entity framework 实体框架-该属性不能配置为导航属性,entity-framework,Entity Framework,我定义了如下两个实体,但出现了一个奇怪的行为: [Table("ClientTypes", Schema="dbo")] public ClientType { [Key] public int Id { get; set; } public string Name { get; set; } } [Table("Clients", Schema="dbo")] public Client { [Key] public long Id { get; s

我定义了如下两个实体,但出现了一个奇怪的行为:

[Table("ClientTypes", Schema="dbo")]
public ClientType {
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
}

[Table("Clients", Schema="dbo")]
public Client {

    [Key]
    public long Id { get; set; }

    [ForeignKey("ClientTypeId")]
    public int ClientTypeId { get; set; }
    public virtual ClientType ClientType { get; set; }
}
我正在用一些值填充
ClientTypeId
属性,但是
ClientType
对象没有填充任何内容。有人能帮我吗


谢谢大家!

您是否渴望加载该值

var clients = context.Clients.Include("ClientType").ToList();

选择客户机时,必须
包括客户机类型

Client cli = (from c in db Clients.Include("ClientType")//or the name of the property
              select c).First();
这将转换为左连接,并为Client和ClientType选择数据。 如果您跳过
Include
,EF将在执行语句时仅为客户端选择数据。
正如Mike所说,如果上下文仍然可用,那么当您访问它时,属性将被延迟加载。

您拥有的
ForeignKey
属性位于错误的属性上

注释可以放置在外键属性上并指定关联的导航属性名称,也可以放置在导航属性上并指定关联的外键名称

-

[ForeignKey(“ClientTypeId”)]
应该改为装饰
公共虚拟ClientType ClientType


或者将其更改为
[ForeignKey(“ClientType”)]
并将其保留在原处。

您的最后一句话不一定是真的。ClientType在客户端上是虚拟的,因此如果上下文仍然可用,它将延迟加载ClientType。@MikeCole Yes。编辑了答案。