gpt4 book ai didi

c# - Entity Framework 将占位符值映射为 null

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:46 25 4
gpt4 key购买 nike

在遗留数据库中,NULL 值有时存储为字符串 NULL 和/或“x”。

我如何告诉 EF 我希望它自动将这些“占位符值”转换为 NULL

更新:
我想通过两次拥有相同的属性来避免模型中的歧义/意外复杂性。 (如果人们可以获取/设置 LegacyColumn,他们就会这样做并且抽象被打破了)

最佳答案

您可以基于未映射到数据库并执行所需转换的现有属性创建新属性。假设该列名为 Foo,您可以使用以下代码:

[Column("Foo")]
public String FooWithWeirdNullValues { get; set; }

[NotMapped]
public String Foo {
get {
return FooWithWeirdNullValues == "NULL" || FooWithWeirdNullValues == "x"
? null : FooWithWeirdNullValues;
}
set { FooWithWeirdNullValues = value; }
}

然后在您的代码中使用未映射的属性访问 Foo 列的值。

您可能想为 FooWithWeirdNullValues 选择另一个名称,例如LegacyFoo 或其他。您可以选择任何名称,只要您使用 Column 属性将其映射到数据库中的正确列即可。

如果需要,您可以将 FooWithWeirdNullValues 设为私有(private),以免污染您的模型。这需要对 DbContext 进行一些更改,如 an answer on Stack Overflow on how to map private properties using code first 中所述。 .

关于c# - Entity Framework 将占位符值映射为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478244/

25 4 0
文章推荐: c - QNX VM 不支持 zmq_vmci?
文章推荐: css - 制作等高的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com