Не могу вставить идентификационный столбец в EF, несмотря на то, что никогда не менял значение

Вот простой пример

from pandas import DataFrame

# Create data set
d = {'Revenue':[100,111,222], 
     'Cost':[333,444,555]}
df = DataFrame(d)


# mask = Return True when the value in column "Revenue" is equal to 111
mask = df['Revenue'] == 111

print mask

# Result:
# 0    False
# 1     True
# 2    False
# Name: Revenue, dtype: bool


# Select * FROM df WHERE Revenue = 111
df[mask]

# Result:
#    Cost    Revenue
# 1  444     111
0
задан Rilcon42 18 January 2019 в 16:33
поделиться

2 ответа

Если вы извлекли и изменили модель с тем же экземпляром DbContext, вам не нужно вызывать метод Add, просто .SaveChanges()

Обновление происходит автоматически, потому что EF отслеживает изменения, которые вы внесли в объекты из базы данных.

0
ответ дан ste-fu 18 January 2019 в 16:33
поделиться

Вы выбираете существующую запись и пытаетесь добавить ее снова.

Ошибка, которую вы получаете, вероятно, связана с тем, что у вас есть поле identity в вашей базе данных, а [DatabaseGenerated(DatabaseGeneratedOption.Identity)] в вашем коде предполагает, что это правда.

Возможно, вы захотите попробовать что-то, что повлияет на:

 var mymodel=_gc.mytbl.Where(x=>x.ID.ToString()=="1").FirstorDefault();
 mymodel.ID = 0;
 _gc.Add(mymodel);
_gc.SaveChanges();

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

Надеюсь, это поможет

0
ответ дан Mark Davies 18 January 2019 в 16:33
поделиться
Другие вопросы по тегам:

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