假设我的帐号为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
和从LWP
转换?
答案 0 :(得分:1)
这是EF最受欢迎的功能之一,但尚未出现。输入转化次数。所以目前,您需要使用字符串数据类型来处理EF。并用另一个AccountNumber属性包装它,它在内部对它进行GET / SET。
隐式运算符尚不可用,因为AccountNumber entiry必须在SQL域中构造,因此它总是以字符串形式返回。发布,您可以进行类型转换,也许这就是EF团队想出的。
但是目前,您需要有明确的包装器属性来为您进行转换..或者使用扩展/辅助方法来处理它。