Первый список кода Entity Framework <строка> Сопоставление свойств

Сначала я работаю с Entity Framework Code. У меня простая модель:

public class Variable
{
    public string Name { get; set; }

    public int Id { get; set; }

    public IList<string> TextOptions
    {
        get;
        set;
    }
}

Я столкнулся с проблемами, когда свойство TextOptions было типа List .

Когда я пытаюсь сделать это в 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 Model Binder, чтобы обрабатывать преобразование очень безопасным и многоразовым образом.

Есть ли ЛЮБОЙ способ сделать это для Entity Framework, столь же чистый, как пользовательские привязки моделей для MVC?

23
задан Mike Bynum 29 November 2011 в 21:08
поделиться

1 ответ

Нет, EF не имеет никаких преобразователей типов или пользовательских преобразователей типов в качестве альтернативы связующим для моделей из MVC. Вы всегда должны использовать некоторые взломать, чтобы заставить упорство. Другим способом сделать то же самое является отображение TextOptions как набор связанных объектов. Это улучшит ваше разделение интересов, но усложнит вашу модель и работу с Variable.

public class Variable
{
    public string Name { get; set; }

    public int Id { get; set; }

    public IList<TextOption> TextOptions
    {
        get;
        set;
    }
}

public class TextOption
{
    public int Id { get; set; }
    public string Text { get; set; }
}
26
ответ дан 29 November 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: