C# 持久化货币和货币值对象
在将Money value对象(支付对象的属性)持久化到数据库时,我正在处理一个数据冗余难题:默认情况下,Entity Framework Core将在支付表中为Money创建3列(Money\u value、Money\u Currency\u Symbol、Money\u Currency\u Name) 为了解决这个问题,我有以下想法:C# 持久化货币和货币值对象,c#,sql-server,entity-framework-core,currency,value-objects,C#,Sql Server,Entity Framework Core,Currency,Value Objects,在将Money value对象(支付对象的属性)持久化到数据库时,我正在处理一个数据冗余难题:默认情况下,Entity Framework Core将在支付表中为Money创建3列(Money\u value、Money\u Currency\u Symbol、Money\u Currency\u Name) 为了解决这个问题,我有以下想法: 创建一个货币表并为其添加数据种子,而货币保留所有值对象功能-这将在支付方法中节省2列(货币名称和货币符号),但添加一个额外的列-货币外键。这可能违反Val
public class Currency
{
public static readonly Currency USD = new Currency("$", "USD");
protected Currency(string symbol, string name)
{
Symbol = symbol;
Name = name;
}
public string Symbol { get; private set; }
public string Name { get; private set; }
}
public class Money
{
public Currency Currency { get; private set; }
public decimal Value { get; private set; }
}
public class Payment
{
// other properties
public Money Money{ get; private set; }
}
替代货币定义(货币为字符串)
public class Money
{
public string CurrencySymbol { get; private set; }
public decimal Value { get; private set; }
}