我有一个存储过程,它返回一个表的所有字段加一个,即:
tablename.*,count(suchandsuch)
当然,当通过LINQs ExecuteQuery执行此操作时,我可以在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;
}
答案 0 :(得分:1)
您可以做的一件事是修改存储过程并将一个输出变量放在
中例如:
create procedure name
@var1 int,
@var2 int output,
as
begin
select @var2=count (columnname), * from tablename
end
将解决您的问题,因为当您在dbml desinger文件中删除此过程时,它将默认创建一个输出变量,您可以轻松访问代码
查看此详细信息:http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/03/13/10236.aspx