元数据中的偶发HTTP 500 GET:breeze元数据无法使用DbContext找到“x”的CLR类型

时间:2014-07-18 15:51:02

标签: entity-framework entity-framework-5 metadata breeze

我知道这可能听起来像一个模糊的问题,但我还没有很好地处理正在发生的事情。这就是我所知道的:

我在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程序集,看看我是否可以通过此问题。

对可能发生的事情有所了解?

0 个答案:

没有答案