我知道这可能听起来像一个模糊的问题,但我还没有很好地处理正在发生的事情。这就是我所知道的:
我在EF 5中使用Breeze 1.4.2。
我在为特定控制器调用Metadata HTTP Get时遇到了零星的问题。该控制器是使用代码优先DbContext构建的POCO控制器。
我能摆脱这个问题的唯一方法是在我的2个节点负载均衡环境中回收IIs App池。顺便说一句,这只发生在目标环境的发布模式中,我从未在本地再现这个错误。
这是MetaData方法:
[HttpGet]
public override string Metadata()
{
return new EFContextProvider<PersonalizationdDtoContext>().Metadata();
}
这是上下文+配置:
internal class PersonalizationdDtoContext : DbContext
{
static PersonalizationdDtoContext()
{
// Prevent attempt to initialize a database for this context
Database.SetInitializer<PersonalizationdDtoContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ApplicationDefaultsConfiguration());
modelBuilder.Configurations.Add(new JsDataTableConfiguration());
modelBuilder.Configurations.Add(new MobilePreferenceModelConfiguration());
}
public DbSet<MobilePreferenceModel> MobilePreferenceModel { get; set; }
public DbSet<ApplicationDefaults> ApplicationDefaults { get; set; }
public DbSet<JsDatatable> JsDatatables { get; set; }
}
internal class ApplicationDefaultsConfiguration : EntityTypeConfiguration<ApplicationDefaults>
{
public ApplicationDefaultsConfiguration()
{
this.HasKey(c => c.Id);
this.Property(c => c.LastUpdateDateTime).IsConcurrencyToken();
this.Property(c => c.PreferenceTypeId).IsRequired();
this.Property(c => c.Id).IsRequired();
}
}
internal class JsDataTableConfiguration : EntityTypeConfiguration<JsDatatable>
{
public JsDataTableConfiguration()
{
this.HasKey(c => c.Id);
this.Property(c => c.LastUpdateDateTime).IsConcurrencyToken();
this.Property(c => c.PreferenceTypeId).IsRequired();
this.Property(c => c.Id).IsRequired();
this.HasRequired(p => p.MobilePreferenceModel)
.WithMany(p => p.JsDatatables)
.HasForeignKey(q => q.MobilePreferenceModelID);
}
}
internal class MobilePreferenceModelConfiguration : EntityTypeConfiguration<MobilePreferenceModel>
{
public MobilePreferenceModelConfiguration()
{
this.HasKey(c => c.Id);
this.HasOptional(p => p.ApplicationDefaults)
.WithRequired();
}
}
我将尝试升级到服务器上的最新breeze程序集,看看我是否可以通过此问题。
对可能发生的事情有所了解?