假设我有一个格式为 YYYY-NNNNNC
的帐号,其中 Y
是年份数字,N
是数字,C
是 Luhn 校验和数字。
示例:2016-426013
它可以作为一个字符串存在,包含它在类形式中所拥有的所有信息:
public class AccountNumber
{
public int Year { get; set; }
public int Number { get; set; }
public int Checksum { get; set; }
}
现在,在我的应用程序中,我宁愿处理这个漂亮的对象,而不是我可能需要解析的字符串。但在数据库中它几乎必须以字符串的形式存在。
我已经编写了隐式转换
public static implicit operator string(AccountNumber an)
还有
public static implicit operator AccountNumber(string s)
有什么方法可以让 EF 存储这样的类:
public class Account
{
public AccountNumber AccountNumber { get; set; }
...
}
但是为了数据库存储的目的,它是否可以将 AccountNumber
与 string
相互转换?
最佳答案
更新:Value conversions EF Core 2.1 及更高版本支持。
这是 EF 最受欢迎的功能之一,但目前尚未实现。类型转换。所以目前,您需要使用字符串数据类型来处理 EF。并用另一个 AccountNumber 属性包装它,该属性在内部对其执行 GET/SET 操作。
隐式运算符还无法工作,因为 AccountNumber 条目必须在 SQL 域中构建,因此它将始终以字符串形式返回。之后,您可以进行类型转换,也许这就是 EF 团队会想到的。
但目前,您要么需要具有显式包装属性来为您进行转换..要么需要扩展/帮助器方法来处理它。
关于c# - Entity Framework 隐式类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35677703/