3

我有一个使用经典实体框架的大型解决方案。

我正在添加 Fluent API,它依赖于 DbContext.OnModelCreating 中定义的映射。当从 UnitTest 项目运行它时一切都很好,因为它没有定义 EDMX。

我的主要 Web 项目仍在使用 EDMX(可能暂时不会消失),并且我正在添加一些使用 Fluent API 的视图。但是,当我打开视图时,我看到 OnModelCreating 从未被调用,因此我引入的所有流畅映射都从未添加。

我确实为 EDMX 和 DbContext 定义了单独的连接字符串。

我如何确保调用 OnModelCreating,即使是从使用经典 EDMX 模型的应用程序中调用?

更新

只要我的实体类的名称与表的名称相同,就可以从我的主站点调用 OnModelCreating !这很令人困惑..一旦我更改了类的大小写(MYENTITY 到 MyEntity),就不再调用 OnModelCreating 了!!,因此未应用所有映射,因此获取失败..

更新 2

令人震惊的是,如果我尝试重命名属性,也会发生同样的事情。

如果我将实体对象的属性从 SHORT_NAME 更改为 ShortName,并在OnModelCreating...中更新我的定义

modelBuilder.Entity<MYOBJECT>()
            .Property(f => f.ShortName)
            .HasColumnName("SHORT_NAME");

OnModelCreating永远不会被调用

4

0 回答 0