自从EF5升级到EF6后,我们遇到了一个问题。我们曾经有这样的模型:
[Table("tblOrganisations")]
public class Organisation
{
...
[InverseProperty("OrganisationId")]
public virtual Client Client { get; set; }
public int? ClientId { get; set; }
... }
[Table("tblClients")]
public class Client : IBelongTo, IHaveADescription, IEntity<int>, IAuditable
{
[Column("OrgID")]
public int OrganisationId { get; set; }
public virtual Organisation Organisation { get; set; }
}
然后Fluent语法管理连接:
modelBuilder.Entity<Organisation>()
.HasOptional(x => x.Client);
在EF5之前哪个工作正常。当我们升级到EF6时,似乎我们不再能够将基类型用于导航属性(即OrganisationId,但我们只能使用组织之类的对象)。
[InverseProperty("Organisation")]
public virtual Client Client { get; set; }
这很好,除非它创建这样的SQL,这是无效的,因为我们希望将OrgID与orgID匹配而不是针对orgId的clientId: INNER JOIN [dbo]。[tblOrganisations] AS [Extent2] ON [Extent1]。[ClientID] = [Extent2]。[OrgID]
任何人都可以告诉我们为什么会发生这种情况以及我们如何解决它?