using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
namespace Util.Data.Dapper.Tests.Infrastructure {
///
/// 数据库初始化脚本
///
public class DatabaseScript {
///
/// 初始化
///
public static void InitProcedures( DatabaseFacade database ) {
CreateGetProductCodeProcedure( database );
CreateGetProductProcedure( database );
CreateGetProductsProcedure( database );
CreateGetOrderItemProcedure( database );
CreateGetProductCodeOutputProcedure( database );
CreateInsertProductProcedure( database );
}
///
/// 创建Proc_GetProductCode存储过程
///
private static void CreateGetProductCodeProcedure( DatabaseFacade database ) {
var sql = @"
Create Procedure Proc_GetProductCode (
id char(36)
)
Begin
Select Code
From Product
Where ProductId = id;
End
";
database.ExecuteSqlRaw( sql );
}
///
/// 创建Proc_GetProduct存储过程
///
private static void CreateGetProductProcedure( DatabaseFacade database ) {
var sql = @"
Create Procedure Proc_GetProduct (
id char(36)
)
Begin
Select *
From Product
Where ProductId = id;
End
";
database.ExecuteSqlRaw( sql );
}
///
/// 创建Proc_GetProducts存储过程
///
private static void CreateGetProductsProcedure( DatabaseFacade database ) {
var sql = @"
Create Procedure Proc_GetProducts (
id char(36),
id2 char(36)
)
Begin
Select p.ProductId As Id,p.*
From Product As p
Where p.ProductId in ( id,id2 );
End
";
database.ExecuteSqlRaw( sql );
}
///
/// 创建Proc_GetOrderItem存储过程
///
private static void CreateGetOrderItemProcedure( DatabaseFacade database ) {
var sql = @"
Create Procedure Proc_GetOrderItem (
id char(36)
)
Begin
Select i.OrderItemId As Id,i.*,o.OrderId As Id,o.*
From OrderItem As i
Left Join `Order` As o On o.OrderId=i.OrderId
Where i.OrderItemId=id;
End
";
database.ExecuteSqlRaw( sql );
}
///
/// 创建Proc_GetProductCode_Output存储过程
///
private static void CreateGetProductCodeOutputProcedure( DatabaseFacade database ) {
var sql = @"
Create Procedure Proc_GetProductCode_Output (
id char(36),
out code_output varchar(50)
)
Begin
Select `Code` into code_output
From `Product`
Where `ProductId` = id;
End
";
database.ExecuteSqlRaw( sql );
}
///
/// 创建Proc_InsertProduct存储过程
///
private static void CreateInsertProductProcedure( DatabaseFacade database ) {
var sql = @"
Create Procedure Proc_InsertProduct (
id char(36),
codeValue varchar(50)
)
Begin
Insert Into Product(ProductId,Code)
Values( id,codeValue );
End
";
database.ExecuteSqlRaw( sql );
}
}
}