Как загрузить varbinary (макс.) поля только при необходимости с Платформой Объекта ADO.NET?

С вашим кодом довольно много проблем.

Как @Kenny Ostrom указал в своем ответе, ваш for формат неверен.

Формат цикла for:

for new_variable_name in list:
    print(new_variable_name)

new_variable_name назначается каждому элементу в этом списке

for циклы повторяются для каждого элемента в списке один раз. В вашем случае

for char in str1
    print(char)

напечатало бы

a
a
b
f
h

Другая проблема, с которой вы столкнулись, - это ненужный цикл while. Вы окружаете свой цикл for в цикле while, который будет продолжать работать и не останавливаться. Если у вас не было цикла for, это может быть полезно для вас, но в этом нет необходимости, поскольку вы уже используете цикл for.

Структура вашей программы должна выглядеть примерно так, если вы хотите использовать цикл for:

list1=['a','b','c']
str1='aabfh'
i=0
for character in str1:
   '''
   Some code here that figures out **if** the character is in list1 and then prints that character. 
   '''

Вы сможете понять это отсюда.

8
задан Emil 19 March 2009 в 16:13
поделиться

2 ответа

Решение состояло в том, чтобы составить отдельную таблицу с varbinary полем и сделать 1 к 1 отношения между таблицами

6
ответ дан 5 December 2019 в 14:06
поделиться

Один путь состоял бы в том, чтобы спроектировать Ваш набор результатов в анонимный тип, когда Вам не нужен блоб:

from entity in context.Entities
select new 
{
    Field1 = entity.Field1,
    Field2 = entity.Field2
}

В этом примере только будут загружены Field1 и Field2.

Этот метод имеет недостаток, что Вы не можете обновить возвращенный экземпляр и сделать контекст. SaveChanges. Хотя я утверждал бы, что сохранение экземпляра без полного знания экземпляра является небезопасной границей. Этот метод хорош, когда Вы хотите длинный список возврата экземпляры, но будете запрашивать для единственного экземпляра, varbinary поле и все перед фактическим обновлением.

1
ответ дан 5 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

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