如何使用Code First Entity Framework在单个字段中存储Ints数组?

时间:2015-11-26 10:50:25

标签: c# entity-framework

我想要做的是在我的数据库中存储一个Ints数组。我正在使用Code First Entity Framework来创建我的数据库,我似乎无法在数据库中创建List或Array元素。列表项不会创建字段。我认为这是因为它需要一个单独的表。

将数组存储在单个字段中的最佳方法是什么?我应该将数组转换为String,还是有更简单的方法?

我的模型包含:

public string Title { get; set; }
public List<int> IdArray { get; set; }

2 个答案:

答案 0 :(得分:0)

NHibernate支持这一点,但EF不支持。

如果您需要这样做,唯一的选择是将其存储为序列化。例如,你可以这样做:

  • 一个XML列,并将其序列化为XML
  • char列,并将其序列化为JSON

EF不会自动序列化/反序列化它。您应该添加一个为您执行序列化/反序列化的属性

public string IdsColumn { get; set; } // Mapped to DB

[NotMapped]
public List<int> Ids
{
    get { return Deserialize(IdsColumn); }
    set { IdsColumn = Serialize(value); }
}

当然,您必须使用XMLSerializer或JSON.NET提供序列化函数实现。

如果您希望实现此功能,请查看此处:EF data user voice

例如Richer collection support, including ordered collections and dictionaries of value types

你可以投票支持。

答案 1 :(得分:0)

我不太确定你的情况,但大部分时间都没有必要......

基本上,如果你遇到这种情况,你应该考虑进一步规范你的桌子。表中的数据需要是“原子的”。一旦作为对象被检索,它就可以在列表中。