2016-06-12 5 views
1

私はWCFの安らかなサービスの作成に取り組んでいます。エンティティフレームワーク経由でデータベースにレコードを追加しようとすると、この例外が発生します:予期しない行数(0)

ストアの更新、挿入、または削除ステートメントが予期しない行数(0)の に影響を与えました。エンティティがロードされてから のエンティティがロードされたため、エンティティが変更または削除されている可能性があります。

私は働く私のデータベースで作成されたトリガを持っています。注意すべき

GO 
CREATE TRIGGER [dbo].[Trigger_groupLocation_date] 
    ON [dbo].[groupLocation] 
    INSTEAD OF INSERT 
    AS 
    BEGIN 
     SET NoCount ON 
     DECLARE @s int 
     DECLARE @g_id int 
     DECLARE @lat float 
     DECLARE @lon float 
     SELECT @s = sender FROM inserted 
     SELECT @g_id = g_id FROM inserted 
     SELECT @lat = latitude FROM inserted 
     SELECT @lon = longitude FROM inserted 

     insert into [groupLocation] (sender,g_id,latitude,longitude) values(@s,@g_id,@lat,@lon) 
    END 

ことの一つは、私が直接データベースにレコードを追加することだということです。私はhereから例外に関するいくつかの詳細を読んで、いくつかの研究の後に私はsimilar質問stackoverflowで見つけた。

var ctx = ((IObjectContextAdapter)db).ObjectContext; 
ctx.Refresh(); 

をしかし、私はまだ同じ例外を取得します。私はDbContextはそうする代わりにrefresh()メソッドを持っていないことを読んで解決をしようとしたときに、しかし、私は試してみました。その後、私はhereを読んでください。コードを最初に使用している場合にのみ、この回避策を実行できます。「データベースアプローチによるEFデザイナー」を使用しています。データの最初のアプローチでRefreshメソッドにアクセスするにはどうすればよいですか?後にトリガーの内側に挿入SQLコードの行を追加すること

+0

-

また、このSO質問をお読みください。 EFが他の変更を同時に許可しない可能性があるので –

+0

私がトリガーをコメントアウトすると、サービスはスムーズに実行され、例外はスローされません。 –

答えて

2

試してください:ID列と上記の文でg_idの両方の出現箇所を交換しない場合、私はg_id仮定

select g_id from [groupLocation] where @@ROWCOUNT > 0 and g_id = scope_identity(); 

は、あなたのID列であります。あなたが今投げているものを除いて、トリガーをコメントして、試すことができますいくつかの時間をError when inserting into table having instead of trigger from entity data framework

関連する問題