Saya memiliki GridView
yang DataSource
-nya disetel ke BindingSource
, yang pada gilirannya properti Datasource
-nya disetel ke variabel IEnumerable <SomeObject>
khusus. Objek khusus ini berasal dari konteks Data Entity Framework. Saat saya mencoba mengubah nilai dari GridView
saya mendapatkan kesalahan 'The ObjectContext instance has been disposed and can no longer be used for operations that require a connection error
'. Hal ini dapat dimengerti karena saya melakukan modifikasi ini ketika konteks data saya sudah dibuang tetapi apakah ada cara untuk menyimpan perubahan ini dalam variabel IEnumerable dan menonaktifkan 'pengikatannya' ke konteks data yang dibuang tersebut?
Sunting: Untuk menyederhanakan, Jika saya mendeklarasikan Daftar baru dan menetapkannya sebagai Sumber Data ke BindingSource yang disebutkan di atas, maka ketika memperbarui baris dari GridView, saya dapat melihat perubahan yang disebarkan ke objek Daftar ini. Namun bagaimana melakukan hal yang sama jika objek ini merupakan hasil dari beberapa kueri dalam konteks Data Entity Framework yang sepertinya 'melampirkan' semacam sisa ke objek yang dihasilkan.
Berikut adalah kode yang relevan:
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()
saja. stackoverflow.com/questions/18398356/ - person Steve Greene   schedule 21.08.2017