2011-06-11 13 views
1

私はSQL Server CEデータベースファイルを持っており、HistoryというADO.NET Entity Frameworkオブジェクトを持っています。最新のIDを取得するには、次の手順を実行します。SQL Server CEデータベースとADO.Net Entity Framework - データが保存されない

var historyid = (from id in db.Histories // Get the current highest history Id 
       select (Int32?)(id.Id)).Max(); 

HistoryID = Convert.ToInt32(historyid); 

if (HistoryID == 0) // No current record exists 
{ 
    HistoryID = 1; // Set the starter history Id 
} 

(これは最善の方法ではありませんが、テストするだけです)。

これはうまく機能し、正しい値を返す(I手動1のIDを入力すると、それは.. 2等と同様、1を返す)

問題は、次のコードである:

History history = new History(); 
history.Id = 1; 
history.SoftwareInstalled = "test"; 

db.AddToHistories(history); 
db.SaveChanges(); 

上記は正常に動作しますが、変更はデータベースに保存されません。どうしてこれなの? dbDeSluggerEntities db = new dbDeSluggerEntities();

ありがとう:

は、ここに私のdb変数です。

編集:私はプログラムを実行してデバッグすると、ヒストリーが作成され、挿入されていることがわかりました。また、主キーのエラーも既に存在しています。アプリケーション(何度も何度も)。しかし、私がサーバエクスプローラに行き、dbを右クリックして 'Show Table Data'を選択すると、データは表示されません。プログラムが再び実行されると、主キーエラーまたは履歴がデバッグに表示されません!

+0

接続文字列を表示できますか?あなたのアプリケーションが起動するたびにデータベースを再作成する可能性はありますか? –

答えて

2

私はまったく同じ問題を抱えていました。デフォルトでは、アプリケーションを実行するときにデータベースがbinフォルダにコピーされ、それが使用されます。

解決方法私のソリューションは、dbのプロパティに入り、決してコピーしないで、アプリケーション構成ファイルの接続文字列でデータベースに完全なファイルパスを設定することでした。

関連する問題