Сначала я работаю с Entity Framework Code. У меня простая модель:
public class Variable
{
public string Name { get; set; }
public int Id { get; set; }
public IList<string> TextOptions
{
get;
set;
}
}
Я столкнулся с проблемами, когда свойство TextOptions
имеет тип List<String>
.
Когда я пытаюсь сделать это в Entity Framework, он не отображается.
Я нашел решение здесь (stackoverflow), которое исправляет мою проблему. Я в основном переделываю свой класс, чтобы он взял список и сделал его разделительной строкой, которая вместо этого сохраняется:
public class Variable : IVariable
{
public string Name { get; set; }
public int Id { get; set; }
public virtual IList<string> TextOptions
{
get
{
return _TextOptions;
}
set
{
_TextOptions = value;
}
}
private IList<string> _TextOptions;
public string TextOptionsSerialized
{
get
{
return String.Join(";", _TextOptions);
}
set
{
_TextOptions = value.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries).ToList();
}
}
}
Этот код работает нормально. Проблема, с которой я сталкиваюсь, заключается в том, что я считаю, что это нарушает Разделение Концерна. Я не думаю, что мой модельный класс должен быть связан с сериализацией списка строк, чтобы инфраструктура Entity могла его сохранить.
У меня возникла аналогичная проблема, работающая в ASP.Net MVC. У меня была почта, отправленная с клиентом, которая будет сопоставлена с моделью. Были некоторые проблемы с тем, как модель была структурирована по сравнению с постами. В MVC я мог написать Custom Binder для обработки конверсии очень безопасным и многоразовым способом.
Есть ли какой-либо способ сделать это для Entity Framework, который так же чист, как Custom Mind для MVC?