繁体   English   中英

如何使用Code First Entity Framework在一个字段中的数据库中存储一个整数数组?

[英]How can I store an Array of Ints in my database, in a single field, using Code First Entity Framework?

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

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

我的模型包含:

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

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数据用户语音

例如, 更丰富的集合支持,包括有序集合和值类型的字典

您可以投票。

我不太确定您的处境,但是在大多数情况下,这永远是不必要的...

基本上,如果您遇到这种情况,则应该考虑进一步标准化表格。 表中的数据必须是“原子的”。 一旦检索为对象,它就可以在列表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM