结构与实体框架,代码优先方法的解决方法

时间:2013-04-04 11:11:18

标签: c# .net database entity-framework ef-code-first

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

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

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

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

任何帮助都将受到高度赞赏。

编辑:添加了示例代码。

Core有许多使用TaxMode Struct的类,并在此Struct中存储数据。

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

结构如下:

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

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

2 个答案:

答案 0 :(得分:3)

不支持结构。

您必须使用class代替它。

更新

看看这个Ladislav Mrnka answer

答案 1 :(得分: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,并使用序列化在数据库中存储和检索数据。