解決した
ストアド プロシージャを含むテーブルからデータセットを挿入/更新/削除するLinq to SQLに問題があります。
- データ接続、接続を追加するときに作成された同じテーブル上のポイントを確認しました
- テーブルの sproc の動作を管理するために Linq-to-Sqlクラス デザイナーを使用しています (挿入、更新、削除)
- 異なるコード スタイルで作成された同じアプリがあり、すべて正常に動作しますが、場所の変更 (他の誰かがアプリをインストールしたとき) を .cs ファイルに含めることができないため、「正しい方法」で実行して動作させたいと考えています。すべての人のために。
- SQL Server 2012 および vs2010 を使用
これが私の問題です。これは、 DataContextの参照としてフォームに含まれています
private ZavrsniradDataContext poziv = new ZavrsniradDataContext();
//I've tried without private, and including this into methods where I'm using it and nothing.
sproc に送信するためのいくつかの変数を宣言した後、テーブルを変更するために sproc を呼び出します。
poziv.p_IzmjenaMjesta(@ID, @Naziv, @PP, @IDZupanije);
poziv.SubmitChanges();
注:比較のために、変更したいデータセットのID番号を送信しています..
Alter proc [dbo].[p_IzmjenaMjesta]
@ID int,
@Naziv varchar(30),
@PP int,
@IDZupanije int
.
.
.
Update Mjesto
SET Naziv= @Naziv, PostanskiPretinac = @PP, IDZupanije = @IDZupanije
WHERE ID = @ID;
sproc を呼び出した後、テーブルが更新され、すべての変更が表示されます。しかし、しばらくすると、すべての変更が消えます。私のテーブルでは、すべての sprocs と関数が適切に機能していると思いますが、どういうわけか私は何か間違ったことをしています。Management studio で sprocs を実行すると、すべてが完全に機能します。
私の他のアプリには、フォームの最初にこの定義が含まれており、すべてが完全に機能します。更新、挿入、削除!しかし、すべての PC でデータベースの固定の場所を作成する必要があるため、そのソリューションは必要ありません。インストールして実行したいだけです:)
public partial class Mjesta : Form
{
ZavrsniRad poziv;
public Mjesta()
{
InitializeComponent();
poziv = new ZavrsniRad(@"c:\zavrsni_rad\Zavrsni rad.mdf");
}
注: 異なるアプリに対して同じ sprocs/functions/dataset を使用して、異なる場所にある両方のデータベースの正確なコピーを使用していますが、一方は機能しており、もう一方は機能していません。そしてそれは私のギアを磨く:(