|
分類:[C#]
OS:Windows7
言語:C#
IDE:VisualStudio Express 2012 for Windows Desktop
DB:SQL Server 2012 Express
お世話になります。
コンストラクタでデータを取得し、削除ボタンクリック時に取得したデータを削除(DELETE)しようとしています。
SetInitialValues内でEntitiesをusingしてplanを取得し、btnDelete_Click内で再度Entitiesをusingして
planを削除しようとするとエラーとなりました。
(別のDbContextで取得したオブジェクトになるので当然といえば当然ですが。。。)
そこでEntitiesを使いまわすために、以下ようにコードを修正したのですが
1.form1が閉じられたとき、EntitiesのDisposeは実行されるのでしょうか?
2.このコードでEntitiesのDisposeが実行されない場合、どのように修正したらよいのでしょうか?
public partial class form1 : Form
{
private List<plan> planList = new List<plan>();
private Entities entity = new Entities();
/// <summary>
/// コンストラクタ
/// </summary>
public form1()
{
InitializeComponent();
SetInitialValues();
}
/// <summary>
/// 初期値をセット
/// </summary>
private void SetInitialValues()
{
var itemData = (from item in entity.item
join plan in entity.plan on item.id equals plan.id
select new { item, plan }).ToList();
/*
ここでDataGridViewの各列にplanの値をセット
*/
planList.AddRange(itemData.Select(x => x.plan).ToList());
}
/// <summary>
/// 削除ボタンクリック時
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDelete_Click(object sender, EventArgs e)
{
foreach (var delPlan in planList)
{
entity.plan.Remove(delPlan);
}
entity.SaveChanges();
this.DialogResult = DialogResult.OK;
}
}
何方かよろしくお願いします。
|