1

Entity Framework 6 Code First で、ユーザーが提供する列を更新するストアド プロシージャを使用する方法はありますか? 私はそれを試しましたが、残念ながら成功しませんでした。

私のSPは次のよ​​うに見えます:

ALTER PROCEDURE [dbo].[Hotel_Insert]
@Bezeichnung [nvarchar](max),
@Sterne [int],
@RegionCode [int],
@Version [int]
AS
BEGIN
    INSERT [dbo].[Hotels]([Bezeichnung], [Sterne], [RegionCode], [Version])
    VALUES (@Bezeichnung + '!', @Sterne, @RegionCode, @Version)


    SELECT [Bezeichnung] as Bezeichnung , [HotelId]
    FROM [dbo].[Hotels] AS t0
    WHERE @@ROWCOUNT > 0 AND t0.[HotelId] = scope_identity()
END

プロパティを計算されたものと結果として定義しようとしました(以下を参照)。

何か問題がありますか、それとも EF はそのようなシナリオをサポートしていませんか?

願い、マンフレッド

modelBuilder.Entity<Hotel>().MapToStoredProcedures(s =>
            s.Insert(proc => proc
                                .HasName("Hotel_Insert")
                                .Parameter(h => h.Bezeichnung, "Bezeichnung")
                                .Parameter(h => h.Sterne, "Sterne")
                                .Parameter(h => h.RegionCode, "RegionCode")
                                .Result(h => h.HotelId, "HotelId")
                                .Result(h => h.Bezeichnung, "Bezeichnung") 
                                )
                .Update(proc => proc
                                    .HasName("Hotel_Update")
                                    .Parameter(h => h.HotelId, "HotelId")
                                    .Parameter(h => h.Bezeichnung, "Bezeichnung")
                                    .Parameter(h => h.Sterne, "Sterne")
                                    .Parameter(h => h.RegionCode, "RegionCode")
                                    // .Parameter(h => h.Region.RegionCode, "RegionCode")
                                    )
                .Delete(proc => proc
                                    .HasName("Hotel_Delete")
                                    .Parameter(h => h.HotelId, "HotelId")));
4

0 に答える 0