Sql server 实体框架和存储过程,如何删除可空参数

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 ?

首先,我使用模型生成DbSet代码。现在我想做的是添加一些存储过程

但我得到的代码是这样的:

        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