希望能够清楚地了解我们如何实施元数据。
我们的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。
答案 0 :(得分:0)
如果您使用.sdf文件的唯一方法是返回元数据,那么Breeze除了从与数据库关联的ObjectContext或DbContext中提取“edmx”之外不会做任何事情。我的猜测是,只是旋转上下文的行为导致EF“修改”“sdf”文件。 Breeze 不做任何直接触摸数据库的事情。