EF Core Migrations不会获取所有属性

Yve*_*lpe 2 .net c# entity-framework entity-framework-core

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

我的DbContext位于:https://github.com/aredfox/TheConference/blob/master/InfoBooth/TheConference.InfoBooth.Data/InfoBoothContext.cs 我的模型类在这里:https://github.com/aredfox/TheConference/树/主/ InfoBooth/TheConference.InfoBooth.Core /型号

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

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

我是否必须在EFCore中使用注释modelBuilderEntityTypeConfiguration形式让EF知道我想要采取什么?.

Iva*_*oev 9

你所有的类属性都是这样的

public string Title { get; }
Run Code Online (Sandbox Code Playgroud)

即只读自动属性.

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

public string Title { get; set; }
Run Code Online (Sandbox Code Playgroud)

访问级别并不重要- private,protectedinternal将工作.唯一的要求是有一个二传手.

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

  • 要添加更多内容,原始属性和参考导航属性需要setter.集合导航不需要setter.(用户在构造函数中编写集合初始值设定项或默认值是常见模式).ID已匹配,因为界面已定义setter并已映射集合导航. (2认同)