private int _billAccount;
public string BillAccount { get
{
var account = _billAccount.ToString().PadLeft(9, '0');
return account.Substring(0, 3) + "-" + account.Substring(3, 3) + "-" + account.Substring(6, 3);
}
set
{
var account = new string(value.Where(char.IsDigit).ToArray());
_billAccount = Convert.ToInt32(account);
}
}
该类中的BillAccount属性将字符串表示形式处理为(999-999-999)。表中的列定义为
BillAccount INT NOT NULL
我尝试使用
.HasField("_billAccount")
.HasConversion(new NumberToStringConverter<int>())
和我能想到的任何其他组合,但我无法使其正常工作。
System.InvalidOperationException:指定的字段'_billAccount' 类型'int'不能用于以下属性的'Lead.BillAccount' 输入“字符串”。仅可从中分配的类型的后备字段 可以使用属性类型
我如何在EF Core 3的Fluent API中进行配置,以使字段_billAccount
映射到表列BillAccount
,即使它们具有不同的类型?
答案 0 :(得分:1)
@madreflection暗示:
public class TheModel {
private int _billAccount;
private string _formattedBillAccount = string.Empty;
public int BillAccount {
get { return _billAccount; }
set {
_billAccount = value;
_formattedBillAccount = value.ToString().PadLeft(9, '0');
_formattedBillAccount = $"{_formattedBillAccount.Substring(0, 3)}-{_formattedBillAccount.Substring(3, 3)}-{_formattedBillAccount.Substring(6, 3)}";
}
}
[NotMapped]
public string FormattedBillAccount { get { return _formattedBillAccount; } }
}