У меня есть GridView
, для которого DataSource
установлено значение BindingSource
, которое, в свою очередь, имеет свойство Datasource
, установленное на пользовательскую переменную IEnumerable <SomeObject>
. Этот настраиваемый объект поступает из контекста данных Entity Framework. Когда я пытаюсь изменить значения из GridView
, я получаю сообщение об ошибке «The ObjectContext instance has been disposed and can no longer be used for operations that require a connection error
». Это понятно, поскольку я делаю эти модификации, когда мой контекст данных уже удален, но есть ли способ просто сохранить эти изменения в переменной IEnumerable и отключить ее «привязку» к этому удаленному контексту данных?
Изменить: для упрощения. Если я объявлю новый список и установлю его в качестве источника данных для упомянутого выше BindingSource, то при обновлении строк из GridView я смогу увидеть изменения, распространяемые на этот объект списка. Но как сделать то же самое, когда этот объект является результатом нескольких запросов в контексте данных Entity Framework, который, кажется, «прикрепляет» какой-то остаток к результирующему объекту.
Вот соответствующий код:
using (AmboliCardEntities context = new AmboliCardEntities(Globals.StrEntityConnecitonString))
{
var transaction = context.tblTransactions.AsNoTracking().FirstOrDefault(a => a.GUID == gTransaction);
if (transaction != null)
{
var ret = new TransactionData
{
Transaction = transaction,
ConstantAccumulations = context.tblConstantAccumulations.AsNoTracking()
.Where(a => a.transactionid == gTransaction && a.removed == false).AsNoTracking().ToList(),
Cashbacks = context.tblCashbacks.AsNoTracking()
.Where(a => a.transactionid == gTransaction && a.removed == false).AsNoTracking().ToList(),
PurchasedProducts = context.tblPurchasedProducts.AsNoTracking().Include(a => a.tblProduct)
.Include(a => a.tblProduct.tblProductBrand)
.Include(a => a.tblProduct.tblProductBrand.tblProductCategory)
.Include(a => a.tblVehicle)
.Include(a => a.tblVehicle.tblVehicleTrim)
.Include(a => a.tblVehicle.tblVehicleTrim.tblVehicleModel)
.Include(a => a.tblVehicle.tblVehicleTrim.tblVehicleModel.tblVehicleMake)
.Where(x => x.transactionid == gTransaction)
.AsNoTracking()
.ToList()
};
var vehicles = context.tblVehicles.AsNoTracking().Include(x => x.tblVehicleTrim)
.Include(x => x.tblVehicleTrim.tblVehicleModel)
.Include(x => x.tblVehicleTrim.tblVehicleModel.tblVehicleMake)
.Where(a => a.cardid == transaction.cardguid)
.AsNoTracking()
.ToList();
return ret;
}
}
.ToList()
. stackoverflow.com/questions/18398356/ - person Steve Greene   schedule 21.08.2017