【发布时间】:2015-01-19 19:52:32
【问题描述】:
或List<KeyValuePair<int,Object>>,或字典。
根据 Entity Framework 和 PostgreSQL 数据库,我们正在尝试对数据的一部分进行建模,该数据基本上由对具有 ID 的名为 OtherObject 的对象的引用列表组成。我们尝试存储的数据是一个MyObject,由一个Id 和一个或多个对OtherObject 的引用和OtherObjects 数量的列表(最大长度为12)组成。所以我们想要存储与此相关的数据(例如在单独的表和列中):
FirstPattern:
OtherObject with ID 1, 10 times
OtherObject with ID 4, 12 times
SecondPattern:
OtherObject with ID 2, 2 times
OtherObject with ID 3, 4 times
OtherObject with ID 4, 11 times
为此,我们认为KeyValuePairs 中的ICollection 是合适的。这样我们就有了一个列表,其中包含每个 Key(OtherObject)的值(数量)。
模型现在基本如下:
public class MyObject
{
public int Id { get; set; }
public IDictionary<OtherObject, int> FirstPattern { get; set; }
public IDictionary<OtherObject, int> SecondPattern { get; set; }
}
我们如何才能将ICollection 的KeyValuePairs 存储在数据库中?
有(更好的)方法吗?
【问题讨论】:
-
那么您的数据库真的只是存储
string值吗? ID 为 1 的其他对象,10 次。还是实际上将其分解为与这些结果相关的列? -
相关的列。我会更新问题。
-
您是否考虑过将您需要的所有数据作为 XML 字段存储在数据库中......?我认为在
SO上也有类似的问题,请查看此帖子,这很简单http://programmers.stackexchange.com/questions/185446/better-way-of-storing-key-value-pairs-in-the -数据库 -
谢谢。 XML 是一种解决方案,但我们正在寻找更优雅的东西。我用 keyvaluepairs 列表的长度在 0 到 12 之间这一事实更新了这个问题。啊,keyvaluepairs 的列表称为字典。 :-) 那是我们的结构。
-
现在我现在它被称为字典,我发现了一个类似的 SO-question,答案为 here,它提供了多种解决方案,其中包括 PostgreSQL 中的
hstore。
标签: c# asp.net-mvc entity-framework postgresql model