簡體   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