Ваши изменения в файле product.json
по-прежнему не делают его действительным JSON, поэтому я использовал следующее:
[
{
"product_type": "widget",
"id": "1744556-ghh56h-4633",
"manufacture_id": "AAB4567",
"store_ids": [
416835,
456145
],
"name": "Best Widget",
"origin": "US",
"manufactured": "2018-08-26",
"uri": "https://bobswidgets.com/best_widget",
"image_uris": {
"small": "https://bobswidgets.com/small/best_widget_sm.jpg",
"normal": "https://bobswidgets.com/medium/best_widget_md.jpg",
"large": "https://bobswidgets.com/large/best_widget_lg.jpg"
},
"manufacture_cost": "12.50"
},
{
"product_type": "widget",
"id": "0956786-dje596-3904",
"manufacture_id": "BCD13D",
"store_ids": [
"014329",
"40123"
],
"name": "Best Widget2",
"origin": "US",
"manufactured": "2018-10-03",
"uri": "https://bobswidgets.com/best_widget_2",
"image_uris": {
"small": "https://bobswidgets.com/small/best_widget2_sm.jpg",
"normal": "https://bobswidgets.com/medium/best_widget2_md.jpg",
"large": "https://bobswidgets.com/large/best_widget2_lg.jpg"
},
"manufacture_cost": "13.33"
}
]
Итак, игнорируя это и предполагая, что вы можете сделайте это как-нибудь сами, вы можете создать нужный словарь, используя нечто, называемое отображение словаря , которое очень похоже на понимание списка .
import json
from pprint import pprint
filename = 'product.json'
with open(filename, 'r') as f:
prod_txt = f.read()
prod_list = json.loads(prod_txt)
result_dict = {product['id']: product['image_uris']['large']
for product in prod_list}
pprint(result_dict)
Вывод:
{'0956786-dje596-3904': 'https://bobswidgets.com/large/best_widget2_lg.jpg',
'1744556-ghh56h-4633': 'https://bobswidgets.com/large/best_widget_lg.jpg'}
Удалите таблицу, а затем вставьте ее снова. Вы должны убедиться, что рядом с полем есть маленький маленький ключ, прежде чем сделать это. Перекомпилируй свой проект и все должно быть в порядке.
То, что вы обновили базу данных, не означает, что файл DBML каким-то образом обновляется автоматически. Это не извините.
Поскольку таблица имеет первичный ключ в SQL Server, заново добавьте таблицу в конструктор linq2sql.
Если это не так, вы можете вручную указать, какие свойства являются частью первичного ключа, в конструкторе.
У меня тоже возникала эта проблема в моем коде C #, и я понял, что забыл обозначение IsPrimaryKey:
[Table (Name = "MySessionEntries" )]
public class SessionEntry
{
[Column(IsPrimaryKey=true)] // <---- like this
public Guid SessionId { get; set; }
[Column]
public Guid UserId { get; set; }
[Column]
public DateTime Created { get; set; }
[Column]
public DateTime LastAccess { get; set; }
}
это необходимо, даже если ваша таблица базы данных ( MySessionEntries , в данном случае) уже определен первичный ключ, поскольку Linq не обнаружит этот факт автоматически, если вы не использовали инструменты linq2sql для переноса определений базы данных в Visual Studio.