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")));