我正在使用 EntityFramework 5.0,并且我有一个已经存在的数据库,但我想为它定义自己的模型,所以我做了这样的事情:
pubilc class MyContext : DbContext
{
public MyContext()
{
Whatevers = Set<Whatever>();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//.. Deal with all the mappings between the real database and
// my beautiful model
}
pubilc DbSet<Whatever> Whatevers { get; private set;}
}
public class Whatever
{
//... you get the gist...
}
它工作正常,除了我第一次启动应用程序时它尝试执行这两个查询:
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
) AS [GroupBy1]
SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[ModelHash] AS [ModelHash]
FROM [dbo].[EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC
现在,这些表都不存在,因此我得到错误,我真的不希望它们出现(这是一个已经存在一段时间的数据库,我只是一个低级的应用程序开发人员而不是数据库霸主)。
我看到了这个问题:How to disable migration in Entity Framework 4.3.1? 这表明了这一点:
Database.SetInitializer<YourContextType>(new CreateDatabaseIfNotExists());
但根据 MSDN,这是默认设置,至少在 5.0 版中。
我在 MSDN 中看到还有:
- DropCreateDatabaseAlways
- DropCreateDatabaseIfModelChanges
- 将数据库迁移到最新版本
但这些听起来都不像我想要的。
是否存在“不理会数据库-它不知道实体框架,老实说,也不关心它” IDatabaseInitializer在某处实现?
有可能制作一个吗?
或者是否有其他一些我可以调整的属性 - 我在任何地方都找不到AutomaticMigrationsEnabled
问题答案中提到的属性。
或者,也许有一个关键原因为什么我实际上需要在数据库中拥有这些表?