我有一个存储过程,该过程返回表的所有字段加一个字段,即:

tablename.*,count(suchandsuch)

当然,当通过linqs执行执行此操作时,我可以在iEnumerable <>中获取表格类的实例,但是我也希望存储的Proc贴上的额外字段。

这可能吗?

我当前的代码看起来像这样:

public class CategoryWithInstanceCount : DataAccess.Category
{
    [System.Data.Linq.Mapping.Column(Storage = "_Instances", DbType = "Int NOT NULL")]
    public int Instances { get; set; }
}

protected IEnumerable<CategoryWithInstanceCount> GetCategories(int? parentid)
{
    PriceDataContext context = new PriceDataContext(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString);
    IEnumerable<CategoryWithInstanceCount> ie = context.ExecuteQuery<CategoryWithInstanceCount>(
        String.Format("EXEC [dbo].[GetCategoryFromParentID] @parentcategoryid = {0}", parentid == null ? "NULL" : parentid.ToString())
        );
    return ie;
}
有帮助吗?

解决方案

您可以做的一件事是修改存储过程,然后将一个输出变量放在其中

例如 :

  create procedure name 
    @var1 int,
    @var2 int output,
   as
  begin

   select @var2=count (columnname), * from tablename
  end

会解决您的问题,因为当您将此过程删除DBML Desinger文件时,它将默认创建一个OUT变量,并且您可以轻松地在代码中访问

检查此详细信息: http://mtaulty.com/communityserver/blogs/mike_taultys_blog/archive/2008/03/13/13/10236.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top