实体框架隐式类型转换

时间:2016-02-28 01:37:24

标签: c# entity-framework type-conversion

假设我的帐号为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转换?

1 个答案:

答案 0 :(得分:1)

这是EF最受欢迎的功能之一,但尚未出现。输入转化次数。所以目前,您需要使用字符串数据类型来处理EF。并用另一个AccountNumber属性包装它,它在内部对它进行GET / SET。

隐式运算符尚不可用,因为AccountNumber entiry必须在SQL域中构造,因此它总是以字符串形式返回。发布,您可以进行类型转换,也许这就是EF团队想出的。

但是目前,您需要有明确的包装器属性来为您进行转换..或者使用扩展/辅助方法来处理它。

功能请求链接:https://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/2639292-simple-type-mapping-or-mapped-type-conversion-supp