7

我目前正在使用 EF 和代码优先方法从现有系统构建数据库。

最好对“核心”类进行最小的更改。因此,我想为 Structs 和 EF 找到解决方法。

是否可以以任何方式将 Struct 包装到类中,以便 EF 可以使用此 Struct 中的数据?由于 EF 能够为我的“核心”类创建自己的代理,我不应该也可以这样做吗?

我对 .Net、C# 和 EF 的了解相当有限,因为我今年因为学士作业而开始学习这门语言。

任何帮助将不胜感激。

编辑:添加了示例代码。

Core 有许多使用 TaxMode 结构的类,并将数据存储在这个结构中。

public class AcmeClass
{    
TaxMode Taxmode { get; set; }
}

结构如下:

public struct TaxMode
{
public string Name { get; set; }
public bool isTrue { get; set; }
}

任何将 的属性添加TaxMode到这些类中的尝试都只会导致不可为空的错误。

4

2 回答 2

6

不支持结构。

你必须使用它来class代替它。

更新

看看这个Ladislav Mrnka 的答案

于 2013-04-04T11:14:42.723 回答
0

您是否考虑过如下的序列化?

[NotMapped]
public TaxMode? TaxMode { get; set; }
public string TaxModeJSON
{
    get
    {
        return TaxMode == null
                   ? null
                   : JsonConvert.SerializeObject(TaxMode);
    }
    set
    {
        if (string.IsNullOrWhiteSpace(value))
            TaxMode = null;
        else
            TaxMode = JsonConvert.DeserializeObject<TaxMode>(value);
    }
}

该解决方案会将您的结构保存为 JSON,并使用序列化将数据存储到数据库或从数据库检索数据。

于 2021-03-16T12:24:40.400 回答