2011-07-27 9 views
1

私はそれをしようと試みた方法ですそれはデータベースにデータを挿入できないのはなぜですか?

ModelContainer mc; 
    public DBController() 
    { 
     mc = new ModelContainer(); 

    } 

    public void SaveArtikel(string name) 
    { 
     mc.Connection.Open(); 
     int id = mc.Produkt.ToList().Last().ID + 1; 
     mc.Produkt.AddObject(new Produkt() { ID = id, Name = name }); 
     mc.SaveChanges(); 
     mc.Connection.Close(); 
    } 

..私は、ローカルデータベースに何かを挿入しようとしているが、それは動作しません。 (ドイツ語の単語と混合しています。)その後 iはarticelのアクセスを持っていますが、それがデータベースにない..です

EDIT: dbがの.sdfファイルです。

私はプロジェクトを右クリックし、次に "新しいアイテム"を押しました。そこ私もビーイングは何.ToList()がないことである理由は、すべての検索でmc.Produkt.ToList().Last().ID + 1;この行を変更したことに注意してください、あなたは上記のような何かを試すことができ、「ローカル・データベース」(コンパクトサーバ)

+1

例外はありますか? 'mc.Produkt'は要素を含んでいますか? –

+0

いいえ例外はありませんが、唯一のことはデータベースにないことです。 – Sunnygurke

+1

ID列を自動インクリメントにすることはできませんか? – Eranga

答えて

0

さて、私はそれがどのように動作するかを確認するためにプロジェクトを公開し

...それはすべての時間を働いていたと思います。多くのテストの後、とても見栄えが良かった。私がPCを再起動した後でさえ、データはdbにありました。

なぜ私は手動でデータを見ることができないのか分かりませんが、問題ありません。

私を助けてくれた皆様に感謝します。

3
using (var mc = new ModelContainer()) 
{ 
    int id = mc.Produkt.Max(p=>p.ID) + 1; 
    mc.Produkt.AddObject(new Produkt() { ID = id, Name = name }); 
    mc.SaveChanges(); 
} 

検索しましたデータベースのレコードをメモリに格納し、次に使用可能なIdを検索します。ここでは、1つのレコードだけが選択されます。

+0

'mc.Produkt'に要素があるかどうかを確認するか、例外が発生します。 –

+0

ヒントありがとう!そして、はい、データベースにはサンプルデータセットがあります。 しかし、それでも動作しません。以前と同じです。 – Sunnygurke

+0

他のアイデア?私は間違って何をしたのかわかりません。 – Sunnygurke

0

さて、あなたに起こっているかもしれないもの、あなたがローカルdata.mdfを使用する場合、それは常にあなたのデバッグbinフォルダにコピーを作るに設定されたプロパティを持ち、かつので、これは、デバッグとあなたを実行するたびに起こるということですプロジェクト。 binフォルダー内のデータベースを対象とすると、そこに何かを挿入することができますが、プロジェクトを再度実行するとテーブルはクリアされます。あなたのデータを常に追跡するために必要なのは、database.mdfの "コピー先出力ディレクトリ"のプロパティを "より新しいコピー"に変更することです。

関連する問題