我在项目中采用了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创建单独的配置?
1条答案
按热度按时间vh0rcniy1#
不使用转换,拥有的实体类型是解决该问题的最佳匹配:
https://learn.microsoft.com/en-us/ef/core/modeling/owned-entities#mapping-owned-types-with-table-splitting