Не может работать Создают, Обновление или Удаляют операции на Таблице, потому что это не имеет никакого первичного ключа

Ваши изменения в файле 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'}

22
задан Keltex 10 April 2009 в 15:14
поделиться

3 ответа

Удалите таблицу, а затем вставьте ее снова. Вы должны убедиться, что рядом с полем есть маленький маленький ключ, прежде чем сделать это. Перекомпилируй свой проект и все должно быть в порядке.

То, что вы обновили базу данных, не означает, что файл DBML каким-то образом обновляется автоматически. Это не извините.

4
ответ дан 29 November 2019 в 04:12
поделиться

Поскольку таблица имеет первичный ключ в SQL Server, заново добавьте таблицу в конструктор linq2sql.

Если это не так, вы можете вручную указать, какие свойства являются частью первичного ключа, в конструкторе.

3
ответ дан 29 November 2019 в 04:12
поделиться

У меня тоже возникала эта проблема в моем коде 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.

32
ответ дан 29 November 2019 в 04:12
поделиться
Другие вопросы по тегам:

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