c# - EF Core 迁移不会获取所有属性

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

使用 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 中使用annotationsmodelBuilder 或某种形式的 EntityTypeConfiguration 让 EF 知道我想要什么拿?

最佳答案

你所有的类属性都是这样

public string Title { get; }

即只读自动属性。

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

public string Title { get; set; }

访问级别并不重要 - privateprotectedinternal 都可以。唯一的要求是有一个二传手。

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

关于c# - EF Core 迁移不会获取所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44354561/

相关文章:

c# - 在 dapper 中进行连接管理的最佳方式?

c# - 将事件订阅到 C# 中的事件?

.net - 学习实现线程池-使用autoresetevent时,信号事件丢失

c# - 更改 .net (C#) 中 XmlDocument 的 XPath 根目录?

c# - 如何在属性中存储 Linq where 条件

C# LINQ 复合排序 3 列

c# - EF 6 连接池和存储的查询字符串 RAM 泄漏

c# - 图片 url 的正则表达式

c# - 如果两个条件之一为真,则结束协程

.net - 查看原始 XML 请求