EF Core Migrations不会获取所有属性

时间:2017-06-04 13:23:51

标签: c# .net entity-framework entity-framework-core

使用EF Core Migrations时,工具不会获取我的所有属性,只有" Id"和一些(不是全部)FK(导航属性)。它似乎也理解"表每层次结构"非常好 - 因为它设置了我想要的鉴别器,但是迁移文件本身并没有反映我在Model命名空间中的属性(参见github代码)。

我的DbContext位于此处:https://github.com/aredfox/TheConference/blob/master/InfoBooth/TheConference.InfoBooth.Data/InfoBoothContext.cs 我的模型类在这里:https://github.com/aredfox/TheConference/tree/master/InfoBooth/TheConference.InfoBooth.Core/Model

您可以查看生成的"初始迁移"在{https://github.com/aredfox/TheConference/blob/master/InfoBooth/TheConference.InfoBooth.Data/Migrations/20170604125116_Initial.cs]。在那里,您会看到它检测到所有Id属性(在基类[Entity][1]中定义),但没有检测到Model classes的其他属性。

我使用添加控制台应用程序来运行迁移的方法(否则它不会工作 - 请参阅Julie Lerman's tips开始使用EF Core。因此,在运行迁移时,我会这样做:dotnet ef --startup-project ../../TheConference.Infrastructure.ConsoleApp migrations add Initial

我是否必须在EFCore中使用注释 modelBuilder EntityTypeConfiguration 的形式才能让EF了解我想要的内容采取吗

1 个答案:

答案 0 :(得分:9)

所有类属性都是这样的

public string Title { get; }

即。只读自动属性。

EF Core不支持(映射)此类属性。为了映射它们,您需要提供属性设置器

public string Title { get; set; }

访问级别无关紧要 - privateprotectedinternal将起作用。唯一的要求是拥有一个二传手。

EF Core还允许映射属性和使用支持字段,但所有这些都需要流畅的API配置,并且很可能不能使用仅获取自动属性,因为它们支持readonly个字段。