【发布时间】:2020-08-18 06:48:14
【问题描述】:
我有一个使用 Entity Framwork 4.0 开发的旧项目,它使用了一些复杂的类型。由于需要将其迁移到 .NET Core,因此我创建了一个新项目,安装了所有必需的库并使用了命令
PM> Scaffold-DbContext "Server=ServerInstance; Database=DBName; Trusted_Connection=True;"
Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
在现有数据库上创建新模型。问题是它不会生成复杂类型的类。
我可以想象我可以用手动创建的复杂类型替换生成的属性,使用[ComplexType] 属性并使用OwnsOne 命令设置属性,但是如果有某种自动生成选项,我会徘徊。
有没有办法做到这一点?
【问题讨论】:
-
数据库没有复杂类型的概念(也没有指示),因此无法自动获取它(除非 EF Core 识别出一些我怀疑的命名约定)。旧系统中的复杂类型很可能是手动创建/映射的,你必须在 EF Core 中手动重构它们(注意 EF Core 中没有
[ComplexType]属性,你可以使用Owned,但列名必须为所拥有类型的每个所有者使用流利的 API 进行映射)。 -
您在
OwnsOne方法构建器操作中执行此操作 - 请参阅 stackoverflow.com/questions/53652135/…
标签: entity-framework-core entity-framework-migrations complextype