代码之家  ›  专栏  ›  技术社区  ›  Eric J.

实体框架4带字典的POCO

  •  13
  • Eric J.  · 技术社区  · 14 年前

    我有一个POCO(普通的旧CLR对象)

    public Foo
    {
       public virtual int Id { get; set; }
       public virtual Dictionary<string, string> Stuff { get; set; }
       public virtual string More { get; set; }
    }
    

    使用 model first

    2 回复  |  直到 14 年前
        1
  •  8
  •   Community c0D3l0g1c    7 年前

    这不是问题的真实答案,但由于没有其他答案,我将分享我所做的。

    {Id, Code, Text}

    List<string> texts = (from sv in q.SelectableValues select sv.Text).ToList();
    List<string> codes = (from sv in q.SelectableValues select sv.Code).ToList();
    string text = (from sv in q.SelectableValues where sv.Code == "MyKey" select sv.Text).First();
    

    就我而言,字典里的词条往往很少。但是,请参见 this question 对于字典/列表较大时的性能考虑。

        2
  •  8
  •   Chris Moschini    13 年前

    Key
    Value
    

    Username (TKey)
    Address1 (TValue)
    Address2 (TValue)
    

    不幸的是,这个通用模式并不是EF内置的;应该提出。

    不必为解决方案开发特定类型,您可以使用一个通用类来生成带数据注释的KeyValuePair版本<>。

    public class EFKeyValuePair<TKey, TValue>
    {
        [Key]
        public TKey Key { get; set; }
        public TValue Value { get; set; }
    }