.net 多个色谱柱的EF值转换

3htmauhk  于 2023-01-22  发布在  .NET
关注(0)|答案(1)|浏览(146)

我在项目中采用了DB-First方法,因此我必须手动进行EFMap。EF值转换是否有办法将多列转换为一条记录?文档中的所有示例仅针对一个属性。https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions?tabs=data-annotations
项目表:
| 身份证|ITM_价格|ITM_币种|ITM_名称|
| - ------|- ------|- ------|- ------|
| 1个|四百二十|美元|项目名称|
示例:

public class Item
{
    public long Id { get; set; }
    public string Name { get; set; }
    public Price Price { get; set; }
}
public record Price(decimal Value, string Currency);

当前的实体类型生成器用于Item

builder
            .Property(e => e.Name)
            .HasColumnName("ITM_Name");

       builder
            .Property(e => e.Price)
            .HasColumnName("ITM_Price")
            .HasColumnType("decimal(25, 6)")
            .HasConversion(
                v => v,
                v => new Price(v, ???)); // Can't set the currency via constructor / property initialization;

我想将配置保存在Item的配置中,将两列Map到此记录中,但如果不可能,我是否需要为Price创建单独的配置?

vh0rcniy

vh0rcniy1#

不使用转换,拥有的实体类型是解决该问题的最佳匹配:
https://learn.microsoft.com/en-us/ef/core/modeling/owned-entities#mapping-owned-types-with-table-splitting

相关问题