使用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了解我想要的内容采取吗
答案 0 :(得分:9)
所有类属性都是这样的
public string Title { get; }
即。只读自动属性。
EF Core不支持(映射)此类属性。为了映射它们,您需要提供属性设置器
public string Title { get; set; }
访问级别无关紧要 - private
,protected
或internal
将起作用。唯一的要求是拥有一个二传手。
EF Core还允许映射属性和使用支持字段,但所有这些都需要流畅的API配置,并且很可能不能使用仅获取自动属性,因为它们支持readonly
个字段。