0

この種のフォーラムに投稿するのはこれが初めてなので、私の無知をお許しください。

SQL Server 2008 mdf データベースを使用する WPF アプリケーションがあります。

次のコードを使用して、新しいレコードを Sales_TBL というテーブルに挿入します。

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\SalesDB.mdf;Integrated Security=True;User Instance=True");

con.Open();
SqlTransaction tran = con.BeginTransaction();

SqlCommand cmd =
      new SqlCommand("INSERT INTO  Sales_TBL (Date, Sale_ID,Cust_Fname, Cust_Lname,  Comments, Total_Sale_Price) VALUES (@salesDate, @SalesID, @CFname, @CLname, @Comms, @TotSalePrice)", con);
cmd.Parameters.AddWithValue("@salesDate", saleDate_DB);
cmd.Parameters.AddWithValue("@SalesID", salesID_DB);
cmd.Parameters.AddWithValue("@CFname", custFname_DB);
cmd.Parameters.AddWithValue("@CLname", custSname_DB);
cmd.Parameters.AddWithValue("@Comms", comments_DB);
cmd.Parameters.AddWithValue("@TotSalePrice", totSalesPrice_DB);

cmd.Transaction = tran;
cmd.ExecuteNonQuery();
tran.Commit();
con.Close();

//navigate to another page to display the contents of the sales_tbl
recPage printRecPage = new recPage();
this.NavigationService.Navigate(printRecPage);

次に、別のページ (recPage) に移動し、以下の Sales_TBL コードのすべてのコンテンツをリストビュー (SoldItemsmListView) に入力します。

DataClasses1DataContext dc = new DataClasses1DataContext();

var q =
from a in dc.GetTable<Sales_TBL>()
select new RecData 
{
   salesID = (string)a.Sale_ID,
   salesDate = (DateTime)a.Date,
   custFname = (string)a.Cust_Fname,
   custSname = (string)a.Cust_Lname,
   saleComms = (string) a.Comments,
   totPrice = (double) a.Total_Sale_Price,
};
SoldItesmListView.DataContext = q;

上記のすべてが正常に機能するようになりましたが、唯一の問題は、挿入クエリを介して入力された最後のレコードが上記のリストビューに表示されないことです(以前に挿入されたデータはリストビューに表示されます)、レコードはに挿入されますアプリケーションを閉じて再実行すると、レコードがリストビューに表示されます。

これが理にかなっていることを願っていますが、なぜこれを行っているのかわかりません.いくつかのフォーラムを検索しましたが、同様の問題は見つかりませんでした.

どんな助けやアドバイスも大歓迎です。

4

1 に答える 1

0

使用している ORM を指定してください (エンティティ フレームワーク、Linq2Sql、...)。通常の Ado.Net コマンドを使用して更新するため、おそらく前のクエリの結果がキャッシュされ、テーブルが更新されたことを認識していません。

同じ ORM を使用してテーブルを更新するか、テーブル データを取得する前にキャッシュをクリアする方法を見つける必要があります。

于 2012-08-03T11:53:40.647 に答える