关于元数据的问题

时间:2013-08-15 14:26:12

标签: breeze

希望能够清楚地了解我们如何实施元数据。

我们的Breeze Api并没有直接绑定到SQL Server,因此我们在下面实现了一个自定义的EFContextProvider和DbSet ....

public class MetadataDbContext : DbContext
{
    public MetadataDbContext()
        : base(nameOrConnectionString: "MetadataDb")
    {
        Database.SetInitializer<MetadataDbContext>(null);
    }
    public DbSet<Order> Orders { get; set; }
    public DbSet<OrderMeter> OrderMeters { get; set; }
    public DbSet<OrderDemand> OrderDemand { get; set; }
    public DbSet<MeterHistory> MeterHistory { get; set; }
    public DbSet<FieldTech> FieldTechs { get; set; }
    public DbSet<Dispatcher> Dispatchers { get; set; }
    public DbSet<OrderLookupData> LookupData { get; set; }
    public DbSet<Organization> Organizations { get; set; }
    public DbSet<Location> Locations { get; set; }
    public DbSet<Alert> Alert { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

    }
}

正如您所看到的,我将DbSet指向名为“MetadataDb”的数据库,该数据库只是我们使用项目部署的sdf文件。然后,我们在Context Provider中覆盖SaveChangesCore,将我们的保存路由到正确的服务,而不是直接转到Entity Framework。我的问题是在一些测试中我们注意到在某些情况下Breeze似乎试图更新sdf文件。它似乎没有改变文件的大小,但只是想在我们开始生产之前确保我们指向元数据的sdf文件不会在我们的服务器上增长。

非常感谢您使用Breeze。

1 个答案:

答案 0 :(得分:0)

如果您使用.sdf文件的唯一方法是返回元数据,那么Breeze除了从与数据库关联的ObjectContext或DbContext中提取“edmx”之外不会做任何事情。我的猜测是,只是旋转上下文的行为导致EF“修改”“sdf”文件。 Breeze 做任何直接触摸数据库的事情。