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。编辑了答案。