Ваш первый набор соответствует стандарту C ++ и не связан с некоторой оптимизацией.
Раздел 12.8 ([class.copy]
) стандарта C ++ дает аналогичный пример:
class X {
// ...
public:
X(int);
X(const X&, int = 1);
};
X a(1); // calls X(int);
X b(a, 0); // calls X(const X&, int);
X c = b; // calls X(const X&, int);
Последняя строка будет соответствовать вашему случаю.
Эти ответы также не являются простым прямым ответом и просто указывают или повторяют ту же тайную документацию, на которую ссылается ОП.
Этот атрибут используется, когда столбец вычисляется базой данных. Поэтому при вставках и обновлениях значение не будет записываться.
Значение будет считано из базы данных после вставок и обновлений, хотя я предполагаю, что если установлено значение Identity
, EF может не прочитать значение после обновления, так как оно не изменилось. Действительно ли это делает эту крошечную оптимизацию, я не знаю.
Примером может быть столбец идентификаторов или последняя обновленная отметка времени.
Если вы посмотрите на то же самое, что называется перечисление , оно скажет, что нужно делать, если вы вставляете или обновляете строки: