Параметры Entity Framework для сопоставления списка строк или списка целых чисел (List)

Я хочу сохранить объект, содержащий список примитивов, используя EF.

public class MyObject {
    public int Id {get;set;}
    public virtual IList<int> Numbers {get;set;}
}

Я знаю, что EF не может хранить это, но я хотел бы знать возможные решения этой проблемы.

2 решения, которые я могу придумать::

1. Создайте фиктивный объект , который имеет идентификатор и целочисленное значение, например.

public class MyObject {
    public int Id {get;set;}
    public virtual IList<MyInt> Numbers {get;set;}
}

public class MyInt {
    public int Id {get;set;}
    public int Number {get;set;}
}

2. Сохраните значения списка в виде большого двоичного объекта , например.

public class MyObject {
    public int Id {get;set;}

    /// use NumbersValue to persist/load the list values
    public string NumbersValue {get;set;}

    [NotMapped]
    public virtual IList<int> Numbers {
         get {
              return NumbersValue.split(',');
         }
         set {
             NumbersValue = value.ToArray().Join(",");
         }
    }
}

Проблема с подходом 2. заключается в том, что мне нужно создать реализацию Custom IList, чтобы отслеживать, изменяет ли кто-то возвращаемую коллекцию.

Есть ли лучшее решение для этого ?

37
задан Bernhard Kircher 16 August 2012 в 15:28
поделиться