Вот простой пример
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
Если вы извлекли и изменили модель с тем же экземпляром DbContext, вам не нужно вызывать метод Add
, просто .SaveChanges()
Обновление происходит автоматически, потому что EF отслеживает изменения, которые вы внесли в объекты из базы данных.
Вы выбираете существующую запись и пытаетесь добавить ее снова.
Ошибка, которую вы получаете, вероятно, связана с тем, что у вас есть поле identity
в вашей базе данных, а [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
в вашем коде предполагает, что это правда.
Возможно, вы захотите попробовать что-то, что повлияет на:
var mymodel=_gc.mytbl.Where(x=>x.ID.ToString()=="1").FirstorDefault();
mymodel.ID = 0;
_gc.Add(mymodel);
_gc.SaveChanges();
Приведенный выше код предназначен для регистрации модели как новой версии самой себя, что должно добавить новую запись в таблицу базы данных. это точно так же, как первый, кроме ID
Надеюсь, это поможет