下面主要介绍 Linq to MySQL (ALinq for MySQL),如果你还不知道 ALinq 是什么,请点击这里。
完整的 Sample 位于 ALinq 的安装目录下的子目录 Samples\CSharpe\OracleSamples.zip 或 Samples\VB\OracleSamples.zip 。
Sample 的使用:打开该工程,然后运行 Sample3_StoreProcedure ,然后点击 Create Procedure 按钮创建存储过程。
示例1:
步骤一:在数据库中创建存储过程,下面这个存储过程是用来添加一个 Category 到数据库中。
BEGIN
INSERT INTO CATEGORIES (CategoryName, Description)
Values (category_name, category_description);
END
步骤二:将存储过程映射到 DataContext 实体类中的方法函数。
public void AddCategory(
[Parameter(Name = " CATEGORY_NAME " )]
string name,
[Parameter(Name = " CATEGORY_DESCRIPTION " )]
string description)
{
ExecuteMethodCall( this , (MethodInfo)MethodBase.GetCurrentMethod(), name, description);
}
步骤三:调用方法函数
db.AddCategory(txtCategoryName.Text, " Description " );
示例二:
步骤一:创建存储过程,下面这个存储过程,是用来获取 Categories 的数量,并赋值给 RETURN_VALUE 参数。
BEGIN
SELECT COUNT ( * ) INTO RETURN_VALUE
FROM CATEGORIES;
END
步骤二:将存储过程映射到 DataContext 实体类中的方法函数。由于存储过程中的 RETURN_VALUE 参数为 out,因此,和该参数对应的,方法函数( GetCategoriesCount ) 中的 count 参数也应该设为 out 。
public void GetCategoriesCount(
[Parameter(Name = " RETURN_VALUE " )]
out int count)
{
count = 0 ;
var result = ExecuteMethodCall( this , (MethodInfo)MethodBase.GetCurrentMethod(), count);
count = ( int )result.GetParameterValue( 0 );
}
步骤三:调用方法函数
db.GetCategoriesCount( out count);
示例三:
步骤一:在数据库中创建如下存储过程,该存储过程是通过 CATEGORY_ID 来获得 Categry 记录中的 CategoryName,并且值赋给 RETURN_VALUE 参数 。
BEGIN
SELECT CATEGORYNAME INTO RETURN_VALUE
FROM CATEGORIES
WHERE CATEGORYID = CATEGORY_ID;
END
步骤二:将存储过程映射到 DataContext 实体类中的方法函数。
public void GetCategoryName(
[Parameter(Name = " CATEGORY_ID " )]
int id,
[Parameter(Name = " RETURN_VALUE " )]
out string name)
{
name = null ;
var result = ExecuteMethodCall( this , (MethodInfo)MethodBase.GetCurrentMethod(), id, name);
name = ( string )result.GetParameterValue( 1 );
}
步骤三:调用方法函数
db.GetCategoryName(Convert.ToInt32(txtCategorID.Text), out name);