代码改变世界

Linq to MySQL 存储的使用

  麦舒  阅读(2510)  评论(0编辑  收藏  举报

下面主要介绍 Linq to MySQL (ALinq for MySQL),如果你还不知道 ALinq 是什么,请点击这里。 

完整的 Sample 位于 ALinq 的安装目录下的子目录 Samples\CSharpe\OracleSamples.zip 或 Samples\VB\OracleSamples.zip 。

Sample 的使用:打开该工程,然后运行 Sample3_StoreProcedure ,然后点击 Create Procedure 按钮创建存储过程。

 

示例1:

步骤一:在数据库中创建存储过程,下面这个存储过程是用来添加一个 Category 到数据库中。

CREATE PROCEDURE ADD_CATEGORY(IN CATEGORY_NAME VARCHAR(30), IN CATEGORY_DESCRIPTION TEXT)

BEGIN
INSERT INTO CATEGORIES (CategoryName, Description)
Values (category_name, category_description);
END

步骤二:将存储过程映射到 DataContext 实体类中的方法函数。

复制代码
[Function(Name = "ADD_CATEGORY")]
public void AddCategory(
[Parameter(Name
= "CATEGORY_NAME")]
string name,
[Parameter(Name
= "CATEGORY_DESCRIPTION")]
string description)
{
ExecuteMethodCall(
this, (MethodInfo)MethodBase.GetCurrentMethod(), name, description);
}
复制代码

步骤三:调用方法函数

var db = CreateDatabaseInstance();
db.AddCategory(txtCategoryName.Text,
"Description");

 

示例二:

步骤一:创建存储过程,下面这个存储过程,是用来获取 Categories 的数量,并赋值给 RETURN_VALUE 参数。

CREATE PROCEDURE GET_CATEGORIES_COUNT(OUT RETURN_VALUE INT)

BEGIN
SELECT COUNT(*) INTO RETURN_VALUE
FROM CATEGORIES;
END

步骤二:将存储过程映射到 DataContext 实体类中的方法函数。由于存储过程中的 RETURN_VALUE 参数为 out,因此,和该参数对应的,方法函数( GetCategoriesCount ) 中的 count 参数也应该设为 out 。 

复制代码
[Function(Name = "GET_CATEGORIES_COUNT")]
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);
}
复制代码

步骤三:调用方法函数

int count;
db.GetCategoriesCount(
out count);

 

示例三:

步骤一:在数据库中创建如下存储过程,该存储过程是通过 CATEGORY_ID 来获得 Categry 记录中的 CategoryName,并且值赋给 RETURN_VALUE 参数 。

CREATE PROCEDURE GET_CATEGORY_NAME(CATEGORY_ID INT, OUT RETURN_VALUE VARCHAR(30))

BEGIN
SELECT CATEGORYNAME INTO RETURN_VALUE
FROM CATEGORIES
WHERE CATEGORYID = CATEGORY_ID;
END

步骤二:将存储过程映射到 DataContext 实体类中的方法函数。

复制代码
[Function(Name = "GET_CATEGORY_NAME")]
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);
}
复制代码

步骤三:调用方法函数

string name;
db.GetCategoryName(Convert.ToInt32(txtCategorID.Text),
out name);
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示