0

我正在使用带有 durandal 和微风模板的 asp.net mvc。

我有以下类(为清楚起见删除了一些属性):

public class Rolling
{
    [Key]
    public int Id { get; set; }
    ...
    public virtual List<Itinerary> Itineraries { get; set; }
}

public class Itinerary
{
    [Key]
    public int Id { get; set; }
    ...
    public int? VehicleId { get; set; }                
    public int? TrailerId { get; set; }
    ...
    public virtual Rolling Vehicle { get; set; }
    public virtual Rolling Trailer { get; set; }
}

我有以下流畅的 API:

modelBuilder.Entity<Rolling>()
            .HasMany(c => c.Itineraries)
            .WithOptional(c => c.Vehicle)
            .WillCascadeOnDelete(false);

modelBuilder.Entity<Rolling>()
            .HasMany(c => c.Itineraries)
            .WithOptional(c => c.Trailer)
            .WillCascadeOnDelete(false);

请注意声明这些流畅 API 的顺序。

在运行时,我执行一个微风查询客户端来获取所有滚动实体:

var query = entityQuery.from('Rollings')
                       .where(predicates)
                       .orderBy(orderyByClause)
                       .expand('Itineraries');

对于每一个,我检查了 itineraries 集合属性:

rollings()[0].itineraries

我注意到我只检索了填充Trailer属性的滚动行程。Itinerary没有填充Vehicle属性的轧制。Itinerary

但是如果我像这样交换流利的 API:

        modelBuilder.Entity<Rolling>()
                    .HasMany(c => c.Itineraries)
                    .WithOptional(c => c.Trailer)
                    .WillCascadeOnDelete(false);

        modelBuilder.Entity<Rolling>()
                    .HasMany(c => c.Itineraries)
                    .WithOptional(c => c.Vehicle)
                    .WillCascadeOnDelete(false);

然后我注意到我只检索了填充Vehicle属性的滚动行程。Itinerary没有填充Trailer属性的轧制。Itinerary

这是正常行为吗?一个错误?

感谢调查。

4

1 回答 1

0

看起来这是Navigation 属性在微风 1.4.2 迁移后不再工作的后续问题。

我能够验证您描述的行为。我还通过在服务器上运行查询来验证这是 EF 行为:

var rolling = mgr.Context.Rollings.Include("Itineraries").First();
var itineraries = mgr.Context.Itineraries.Local;

您会注意到,行程中只会包含填充了 Vehicle 或 Trailer 的行程(取决于流畅的 API 定义顺序)。

对我来说,它看起来像是一个错误,而是一个实体框架错误(不是 Breeze 的错误)。

我认为微软在这方面会有更好的说法,所以将您的问题发布在http://social.msdn.microsoft.com/Forums/en-US/7438371d-1072-4a9a-aab8-d12842493066/possible-bug-include-不能正常工作

于 2013-09-19T19:17:22.637 回答