LINQ to SQL调用存储过程简单示例
2011-10-23 00:44 Echo. 阅读(305) 评论(0) 收藏 举报using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Linq;
using System.Reflection;
using System.Text;
namespace ConsoleApplication1
{
[Database(Name = "Northwind")]
class Northwind : DataContext
{
public Northwind(string connectionString)
: base(connectionString)
{
}
public Northwind(IDbConnection connection)
: base(connection)
{
}
public Table<Customer> Customers;
public Table<Order> Orders;
public Table<Employee> Employees;
public Table<Product> Products;
public Table<OrderDetail> OrderDetails;
//返回单个普通结果集,带有输入参数
[Function(Name = "dbo.CustomersByCity", IsComposable = false)]
public ISingleResult<CustomersByCityResult> CustomerByCity([Parameter(Name = "param1", DbType = "NVARCHAR(20)")] string city)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), city);
return ((ISingleResult<CustomersByCityResult>)(result.ReturnValue));
}
//带有输出参数
[Function(Name = "dbo.CustOrderTotal", IsComposable = false)]
[return: Parameter(DbType = "INT")]
public int CustOrderTotal([Parameter(Name = "CustomerID", DbType = "NCHAR(5)")] string customerID, [Parameter(Name = "TotalSales", DbType = "MONEY")] ref decimal? totalSales)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), customerID, totalSales);
totalSales = (decimal?)(result.GetParameterValue(1));
return ((int)(result.ReturnValue));
}
//返回单个结果集,但是可能结构不是固定的
[Function(Name = "dbo.VariableResultShapes", IsComposable = false)]
[ResultType(typeof(CustomerResult))]
[ResultType(typeof(OrderResult))]
public IMultipleResults VariableResultShapes([Parameter(Name = "shape", DbType = "INT")] int shape)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), shape);
return ((IMultipleResults)(result.ReturnValue));
}
//返回多个结果集
[Function(Name = "dbo.MultipleResultTypesSequentially", IsComposable = false)]
public IMultipleResults MultipleResultTypesSequentially()
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((IMultipleResults)(result.ReturnValue));
}
}
}
浙公网安备 33010602011771号