#c# #string #entity-framework #join #asp.net-core-2.0
#c# #строка #entity-framework #Присоединиться #asp.net-core-2.0
Вопрос:
У меня есть класс Articulos, где у меня есть столбец с именем Genero, который является ICollection. В представлении у меня есть список множественного выбора, который прикреплен к нему, что я делаю для сохранения выбора в ApplicationDbContext я преобразую ICollection в длинную строку с помощью string.Join() и сохраните его.
Проблема в том, что строка, которую он сохраняет без разделителя, в моем случае я использую «,», но похоже, что метод игнорирует это.
Вот столбец в классе:
[Required]
public ICollection<string> Genero { get; set; }
Это часть контекста БД:
modelBuilder.Entity<Articulo>().Property(e => e.Genero)
.HasConversion(
v => string.Join(",", v),
v => v.Split(",", StringSplitOptions.RemoveEmptyEntries));
Когда я сохраняю строку, она должна показывать что-то вроде:
Террор, приостановка, Анимада…
Но вместо этого он показывает мне: TerrorSuspensoAnimada
Я работаю над ASP.Net Ядро 2.2
Комментарии:
1. Можете ли вы поделиться тем, что
HasConversion
есть / делает?2. Это метод, который настраивает свойство таким образом, что значение преобразуется в заданный тип перед записью в базу данных и преобразуется обратно при чтении из базы данных. ссылка @John
3. Каков тип первого во время компиляции
v
, то естьv
instring.Join(",", v)
? Можете ли вы навести указатель мыши на этоv
и посмотреть, что там написано? Вероятно, вы получаете другую перегрузкуJoin
, чем вы думаете. Если вы попробуете вместо этого,string.Join(",", v.AsEnumerable())
что произойдет? РЕДАКТИРОВАТЬ: я вижу, что вы пишете','
в вопросе. Можете ли вы проверить и посмотреть, нет ли у вас","
в реальном коде? Пожалуйста, сделайте код вопроса как можно более точным.4. @JeppeStigNielsen, извините, это была ошибка «,». Что касается вашего вопроса, когда я навожу курсор мыши на v, он говорит: (параметр) IColecction<строка> v. Я сделал то, что вы предлагаете, и отметил ошибку: ICollection не содержит определения для AsEnumerable() и не найден доступный метод.
5. Хорошо,
AsEnumerable()
требуетсяusing System.Linq;
директива в верхней части файла. Но это, вероятно, ничего не решит. Для @John, я думаю,HasConversion
может быть это перегрузка:PropertyBuilder<TProperty>.HasConversion<TProvider>
перегрузка