Вы должны использовать один контекст в обоих методах. Также не используйте db.Entry(member).State = EntityState.Modified;
, потому что он будет генерировать инструкцию обновления для всех свойств. вместо этого используйте db.Entry(member).Property("PropertyName").IsModified = true;
. Если context.Configuration.AutoDetectChangesEnabled == true
, и вы получаете данные из контекста для изменения, то вам не нужно использовать ни один из них.
public void FunctionA(DbContext context, int openid)
{
var member = db.Members.Find(openid);
member.A=a;
db.Entry(member).Property("A").IsModified = true;
}
public void FunctionB(DbContext context, int openid)
{
var member = db.Members.Find(openid);
member.B=b;
db.Entry(member).Property("B").IsModified = true;
}
Затем вызовите оба этих методов и SaveChanges
для одного контекста, например:
using (NielsenPMContext db = new NielsenPMContext())
{
FunctionA(db, openid);
FunctionB(db, openid);
db.SaveChanges();
}
Примечание: Не бойтесь, используя Find
метод дважды, потому что структура субъект получит его из локального контекста вместо базы данных после первого раза. Или будет здорово получить участника и отправить его в FunctionA
и FunctionB
. И я считаю, что у вас есть все основания изменить A
и B
пользователей в разных форматах.
где ваша функция A и функция B? Можете ли вы поместить их тоже? – Sampath
@ Sampath. Ниже приведен ответ, который я имею в виду, A & B - это то же самое, но меняют разные настройки сущности. Я решил это, тоже! – Nico