假设我有以下课程:struct Vector{ public float X { get; set; } public float Y { get; set; } public float Z { get; set; }}class Player{ public string Name { get; set; } public Vector Position { get; set; }}我如何在实体框架(核心)中配置它,使其映射到 Name、PositionX、PositionY、PositionZ?这是用于代码生成目的,所以我不希望用户必须在考虑 EF 的情况下创建他们的 POCO(它也可以发送到很多其他语言!)
3 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
目前(EF Core 3)不支持。但是,有一个关于它的 GitHub 问题,看起来 structs-as-owned-types 已被未来版本接受:
https://github.com/dotnet/efcore/issues/9906
长风秋雁
TA贡献1757条经验 获得超7个赞
正在寻找同样的东西,并遇到了这个问题。以为我会发布我发现的内容:EF Core 团队建议将其作为 JSON 存储在您的数据库中并使用自定义值转换器:
modelBuilder.Entity<Order>()
.Property(e => e.Vector)
.HasConversion(
v => JsonSerializer.Serialize(v, null),
v => JsonSerializer.Deserialize<Vector>(v, null));
虽然不理想。
慕桂英3389331
TA贡献2036条经验 获得超8个赞
对于 Entity Framework Core,您所描述的称为拥有实体
配置是这样的:
modelBuilder.Entity<Player>()
.OwnsOne(p => p.Position);
- 3 回答
- 0 关注
- 198 浏览
添加回答
举报
0/150
提交
取消