我们可以让Entity Framework创建更简单的sql吗?

时间:2013-09-26 15:01:27

标签: sql entity-framework

我们正在尝试在遗留数据库上使用Entity Framework Code First(5.0),我们在涉及连接表的常见模式中存在一些问题。

例如,客户可以拥有多个地址,但地址表也用于其他类型的地址,因此有一个连接表可以将客户与其地址相关联: 客户 - >客户地址 - >地址。 联接表CustomerAdress具有customer-Id和address-Id。

在我们的模型中,我们只有一个Customer类和一个Address类,简化如下:

public class Customer
{
    public long Id { get; set; }
    public IList<Address> Addresses { get; set; }
}
public class Address
{
    public long Id { get; set; }
}

我们使用以下代码在OnModelCreating中设置映射:

modelBuilder.Entity<Customer>()
            .HasMany(o => o.Addresses)
            .WithMany()
                .Map(m =>
                    {
                        m.ToTable("CustomerAddress");
                        m.MapLeftKey("CustomerId");
                        m.MapRightKey("AddressId");
                    });

一切正常但是当我们尝试对Customer进行查询时,包含()地址结果sql看起来非常复杂,从具有多个连接的select中选择,并在添加这样的另一个关系之后,sql类爆炸的数量

如果手动编写sql用于此关系,我将使用从Customer到CustomerAddress的左外连接,然后使用从CustomerAddress到Address的连接。 有没有办法让Entity Framework为这个例子创建一个更简单的sql语句?

0 个答案:

没有答案