Sql server 实体框架和存储过程,如何删除可空参数
首先,我使用模型生成DbSet代码。现在我想做的是添加一些存储过程 但我得到的代码是这样的:Sql server 实体框架和存储过程,如何删除可空参数,sql-server,stored-procedures,entity-framework-4,entity-framework-4.1,Sql Server,Stored Procedures,Entity Framework 4,Entity Framework 4.1,首先,我使用模型生成DbSet代码。现在我想做的是添加一些存储过程 但我得到的代码是这样的: public virtual ObjectResult<Nullable<int>> CountPostsInThread(Nullable<int> threadID, ObjectParameter postCount) { var threadIDParameter = threadID.HasValue ?
public virtual ObjectResult<Nullable<int>> CountPostsInThread(Nullable<int> threadID, ObjectParameter postCount)
{
var threadIDParameter = threadID.HasValue ?
new ObjectParameter("threadID", threadID) :
new ObjectParameter("threadID", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<int>>("CountPostsInThread", threadIDParameter, postCount);
}
模板或存储过程没有问题。SP的参数接受NULL值,因此EF使其可为NULL。之所以使用三元运算符,是因为如果传递null,EF必须以某种方式传递null参数的类型,以正确设置内部使用的
SqlParameter
。您的SP从不设置@PostCount
我知道,这是我的实验遗留下来的。
ALTER PROCEDURE dbo.sp_CountPostsInThread
(
@threadID int,
@PostCount int = 0 OUTPUT
)
AS
SELECT COUNT(*)
FROM PostSet
WHERE PostSet.ThreadID = @threadID