Entity framework Fluent API-集合导航
我正在使用asp.net mvc和durandal&breeze模板 我有以下类(为了清晰起见删除了一些属性): 对于每一个,我都会检查“行程”集合属性:Entity framework Fluent API-集合导航,entity-framework,breeze,Entity Framework,Breeze,我正在使用asp.net mvc和durandal&breeze模板 我有以下类(为了清晰起见删除了一些属性): 对于每一个,我都会检查“行程”集合属性: rollings()[0].itineraries 我注意到,我只检索了行程的拖车属性已填充的滚动行程。没有填写行程的车辆属性的滚动 但是如果我像这样交换fluent API: modelBuilder.Entity<Rolling>() .HasMany(c =>
rollings()[0].itineraries
我注意到,我只检索了行程
的拖车
属性已填充的滚动行程。没有填写行程
的车辆
属性的滚动
但是如果我像这样交换fluent 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);
modelBuilder.Entity()
.HasMany(c=>c.行程)
.带可选(c=>c.拖车)
.WillCascadeOnDelete(假);
modelBuilder.Entity()
.HasMany(c=>c.行程)
.带选装件(c=>c.车辆)
.WillCascadeOnDelete(假);
然后我注意到,我只检索了行程
的车辆
属性已填充的滚动行程。没有填写行程
的拖车
属性的滚动
这是正常的行为吗?虫子
感谢您的调查。这似乎是您的后续问题 我能够证实你描述的行为。 我还通过在服务器上运行查询验证了这是EF行为:
var rolling = mgr.Context.Rollings.Include("Itineraries").First();
var itineraries = mgr.Context.Itineraries.Local;
您会注意到,行程仅包含车辆或拖车已填充的行程(取决于fluent API定义顺序)
对我来说,它看起来像一个bug,但却是一个实体框架bug(不是Breeze的bug)
我认为微软在这方面会有更好的说法,所以将您的问题发布在。感谢您的关注。
rollings()[0].itineraries
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);
var rolling = mgr.Context.Rollings.Include("Itineraries").First();
var itineraries = mgr.Context.Itineraries.Local;