c# - Entity Framework 隐式类型转换

标签 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; }
    ...
}

但是为了数据库存储的目的,它是否可以将 AccountNumberstring 相互转换?

最佳答案

更新:Value conversions EF Core 2.1 及更高版本支持。

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

隐式运算符还无法工作,因为 AccountNumber 条目必须在 SQL 域中构建,因此它将始终以字符串形式返回。之后,您可以进行类型转换,也许这就是 EF 团队会想到的。

但目前,您要么需要具有显式包装属性来为您进行转换..要么需要扩展/帮助器方法来处理它。

关于c# - Entity Framework 隐式类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35677703/

相关文章:

c# - 在 Entity Framework 中查询今天的记录

c# - 为什么我可以放弃 IList<T> 的不变性?

c++ - C++ 隐式转换原语的警告或错误

c# - 使用实现 2 个接口(interface)的 EF DbContext 进行依赖注入(inject)

c# - 当前上下文用户控件中不存在名称 'xxx'

c# - 英孚。在没有 [Required] 属性的情况下引发字符串字段的必需验证错误

sql-server - 为什么主键顺序很重要?

csv - 将大量 .csv 文件转换为 SPSS 文件

c# - 为什么这两行程序会出现 NullPointerException?

c# - PDFsharp - 使用私有(private)字体