使用 EF Core 迁移时,工具不会获取我的所有属性,只会获取“Id”和一些(不是全部)FK(导航属性)。它似乎也非常了解“每个层次结构的表”——因为它在我想要的地方设置了一个鉴别器,但迁移文件本身并没有反射(reflect)我在我的模型命名空间中的属性(参见 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 中使用annotations 或 modelBuilder 或某种形式的 EntityTypeConfiguration 让 EF 知道我想要什么拿?。
最佳答案
你所有的类属性都是这样
public string Title { get; }
即只读自动属性。
EF Core 不支持(映射)此类属性。为了让它们映射,您需要提供属性 setter
public string Title { get; set; }
访问级别并不重要 - private
、protected
或 internal
都可以。唯一的要求是有一个二传手。
EF Core 还允许映射属性和使用支持字段,但所有这些都需要流畅的 API 配置,而且很可能无法使用仅获取自动属性,因为它们由 readonly
字段支持。
关于c# - EF Core 迁移不会获取所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44354561/