Независимая ассоциация не работает с AddOrUpdate
, которая обычно используется в методе Seed
. Когда ссылка представляет собой существующий элемент, она будет вставлена повторно.
// Existing customer.
var customer = new Customer { Id = 1, Name = "edit name" };
db.Set().AddOrUpdate(customer);
// New order.
var order = new Order { Id = 1, Customer = customer };
db.Set().AddOrUpdate(order);
В результате существующий клиент будет вставлен повторно, а новый (повторно вставленный) клиент будет связан с новым заказом.
Если мы не используем ассоциацию внешних ключей и не присваиваем идентификатор.
// Existing customer.
var customer = new Customer { Id = 1, Name = "edit name" };
db.Set().AddOrUpdate(customer);
// New order.
var order = new Order { Id = 1, CustomerId = customer.Id };
db.Set().AddOrUpdate(order);
Мы ожидаем, что существующий клиент будет связан с новым порядком.
Python не поддерживает ++
, но вы можете:
number += 1
Проще говоря, операторы ++
и -
не существуют в Python, потому что они не были бы операторами , они должны были бы быть заявления . Любая модификация пространства имен в Python - это заявление для простоты и согласованности. Это одно из дизайнерских решений. А поскольку целые числа неизменяемы, единственный способ «изменить» переменную - переназначить ее.
К счастью, у нас есть замечательные инструменты для вариантов использования ++
и -
на других языках, например enumerate ()
и itertools. .count ()
.
Основная причина, по которой ++ пригодится в C-подобных языках, - это отслеживание индексов. В Python вы работаете с данными абстрактно и редко увеличиваете их с помощью индексов и тому подобного. Наиболее близким по духу к ++
является метод итераторов next
.
Здесь есть объяснение : http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python
Однако отсутствие этого оператора в философии питона увеличивает последовательность и избегает неявности.
Кроме того, этот вид приращений не так широко используется в коде Python, потому что в Python есть строгая реализация шаблона итератора и функции enumerate.
Посмотрите на Поведение операторов инкремента и декремента в Python для объяснения, почему это не работает.
В Python действительно нет ++ и --, и лично я никогда не чувствовал, что это такая уж потеря.
Я предпочитаю функции с понятными именами операторам с не всегда понятной семантикой (отсюда классический вопрос на собеседовании о ++x против x++ и трудности перегрузки). Я также никогда не был большим поклонником того, что пост-инкрементация делает для удобочитаемости.
Вы всегда можете определить некоторый класс-обертку (например, accumulator) с явной семантикой инкремента, а затем сделать что-то вроде x.increment() или x.incrementAndReturnPrev()
. Да. Оператор ++
недоступен в Python. Гвидо не любит этих операторов.