gpt4 book ai didi

c# - 在 Entity Framework 中使用存储过程

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:31 25 4
gpt4 key购买 nike

我有一个模型优先的 EF 模型。我刚刚导入了第一个存储过程:cpas_POIDVendorProjectDate

我将其作为函数导入。它有三个输入参数:@ProjectID(int)@VendorID(int)@Workdate(datetime),并返回@POID(int).

SQL 代码如下:

 CREATE PROCEDURE [dbo].[cpas_POIDVendorProjectDate]
@VendorID int,
@ProjectID int,
@WorkDate datetime,
@PO_ID int OUTPUT
AS
BEGIN
SET NOCOUNT ON;

DECLARE @RowCount int;

SELECT @PO_ID = ID FROM tblPO WHERE
VendorID = @VendorID
AND ExpirationDate >= @WorkDate
AND (ProjectID IS NULL OR ProjectID = @ProjectID)
AND CapitalExpense = (
SELECT CapitalExpense FROM tblProjects WHERE ID=@ProjectID)
AND GroupCode in (1,3,5);

SET @RowCount = @@RowCount;

IF (@RowCount != 1)
SET @PO_ID = -1*@RowCount;

END

我在我的c#程序中这样调用它:

context.cpas_POIDVendorProjectDate(
currVendorID, currProjectID, currWorkDate, currPOID);

Intellisense 说我对“上下文”的使用是错误的...它是一个“变量”,我将其用作“方法”。

此外,currPOID 被拒绝,因为它正在寻找 system.data.objects.OjbectParameter,而不是 int。 Intellisense 对函数名和其他参数很满意(奇怪的是……)

我在这里做错了什么?

最佳答案

如果没有别的办法,你总是可以这样做:

using(var context = new MyDataContext())
{
using(var cmd = context.Database.Connection.CreateCommand())
{
cmd.CommandText = "cpas_POIDVendorProjectDate";
cmd.CommandType = CommandType.StoredProcedure;
//if the stored proc accepts params, here is where you pass them in
cmd.Parameters.Add(new SqlParameter("VendorId", 10));
cmd.Parameters.Add(new SqlParameter("ProjectId", 12));
cmd.Parameters.Add(new SqlParameter("WorkDate", DateTimw.Now));
var poid = (int)cmd.ExecuteScalar();
}
}

关于c# - 在 Entity Framework 中使用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14778607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com