我想要做的是在我的数据库中存储一个Ints数组。我正在使用Code First Entity Framework来创建我的数据库,我似乎无法在数据库中创建List或Array元素。列表项不会创建字段。我认为这是因为它需要一个单独的表。
将数组存储在单个字段中的最佳方法是什么?我应该将数组转换为String,还是有更简单的方法?
我的模型包含:
public string Title { get; set; }
public List<int> IdArray { get; set; }
答案 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)
我不太确定你的情况,但大部分时间都没有必要......
基本上,如果你遇到这种情况,你应该考虑进一步规范你的桌子。表中的数据需要是“原子的”。一旦作为对象被检索,它就可以在列表中。