0

这是一个示例设置:

public class Car
{
 public int CarId { get; set; }
 public int? PreviousOwnerId { get; set; }
 public PreviousOwner PreviousOwner { get; set; }
}

public PreviousOwner
{
 public int PreviousOwnerId { get; set; }
 public string Name { get; set; }
}

然后是查询:

var cars = db.Cars.Where( c => c.PreviousOwner.Name = "Stack" ).ToList();

但是,我收到一个错误,因为有些汽车有一个 null PreviousOwnerId。内部异常读取"Unknown column 'Extent1.PreviousOwnerId' in 'where clause'".

注意:这是使用 .net mysql 连接器

4

1 回答 1

-1

您在这里遇到的问题是您的导航属性似乎没有足够的配置信息。(例如模型构建器配置或属性配置)在为 PK/Fks 使用非标准名称时需要。我建议在这里阅读我关于导航属性如何工作的文章:http: //blog.staticvoid.co.nz/2012/7/17/entity_framework-navigation_property_basics_with_code_first

我想您将需要以下内容(示例使用模型构建器):

modelBuilder.Entity<Car>().HasOptional(c=>c.PreviousOwner).WithMany().HasForeignKey(c=>c.PreviousOwnerId);
于 2013-01-11T01:04:09.970 回答