7

我正在尝试对现有数据库进行一些实体框架代码优先编程..但我一直在我的 Sql Profiler 中看到此代码:-

SELECT   TOP ( 1 ) [Extent1].[Id]        AS [Id],
                   [Extent1].[ModelHash] AS [ModelHash]
FROM     [dbo].[EdmMetadata] AS [Extent1]
ORDER BY [Extent1].[Id] DESC

这个 EdmMetadata 表到底是什么,为什么我的 EF 代码试图从那里获取 Id 和 ModelHash?

请记住,我正在尝试针对现有数据库。

干杯:)

4

1 回答 1

10

没有针对现有数据库的 Code-First。如果你有数据库,你正在做数据库优先。在这种情况下,您的映射由数据库驱动。

EdmMetadata 表保存当前代码优先模型的哈希,它允许DbContext检测模型的变化,以便可以重新创建数据库。此功能默认开启。您可以通过删除以下约定来关闭它OnModelCreating

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
于 2011-03-21T06:52:42.353 回答