Breeze EFContextProvider Metadata()导致数据库未设定种子
在应用程序中,我正在构建客户端要做的第一件事就是请求breeze元数据。如果数据库不存在且entity framework需要创建数据库,则不会使用配置为database.SetInitializer的初始值设定项进行种子设定 如果其他内容触发EF首先对dbcontext执行查询,则数据库将按预期进行种子设定 我不确定这是一个bug还是出于某种原因Breeze EFContextProvider Metadata()导致数据库未设定种子,breeze,Breeze,在应用程序中,我正在构建客户端要做的第一件事就是请求breeze元数据。如果数据库不存在且entity framework需要创建数据库,则不会使用配置为database.SetInitializer的初始值设定项进行种子设定 如果其他内容触发EF首先对dbcontext执行查询,则数据库将按预期进行种子设定 我不确定这是一个bug还是出于某种原因 谢谢我很确定这个漏洞在你这边。首先,在创建和种子化数据库时检索元数据没有问题。一直这样做 您可以在任何Breeze Todo示例中看到这一点。请记住
谢谢我很确定这个漏洞在你这边。首先,在创建和种子化数据库时检索元数据没有问题。一直这样做 您可以在任何Breeze Todo示例中看到这一点。请记住,第一个Breeze客户端查询总是在处理查询之前请求元数据,因此对服务器的第一次调用(在这些示例中)总是请求元数据。如果元数据请求未能生成数据库,则这些示例将不起作用 Todos示例在类ctor(静态ctor)中以一种简单的方式初始化数据库并为其种子。这是完整的TodosContext.cs
名称空间Todo.Models{
使用System.Data.Entity;
公共类TodosContext:DbContext
{
//仅用于开发:初始化数据库
静态TodosContext()
{
SetInitializer(新的TodoDatabaseInitializer());
}
公共DbSet Todos{get;set;}
}
}
要看到它的作用:
你做得怎么样?啊-你是对的。经过调查,我发现了这个问题。我在这里遵循了您的示例:忽略属性。第二个上下文没有使用正确的初始值设定项,所以我解决了这个问题。我知道OData使用[IgnoreDataMember]来实现这一点?你们有没有可能实现这个?
namespace Todo.Models {
using System.Data.Entity;
public class TodosContext : DbContext
{
// DEVELOPMENT ONLY: initialize the database
static TodosContext()
{
Database.SetInitializer(new TodoDatabaseInitializer());
}
public DbSet<TodoItem> Todos { get; set; }
}
}