[代码]如何使用为多个结果形状映射的存储过程(LINQ to SQL)

本文介绍了一种返回结果形状不确定的存储过程,并演示了如何为这类存储过程创建映射函数,以及如何通过映射函数获取不同形状的数据。

有一种存储过程,它返回的结果形状是不确定的,可能会根据所传递的参数不同,而返回不同的结果形状。
比如下面的这个存储过称。
CREATE PROCEDURE VariableResultShapes(@Shape int) AS if(@Shape = 1) select CustomerID, ContactTitle, CompanyName from Customers else if(@Shape = 2) select OrderID, ShipName from Orders
很明显当@Shape的值为1和2的时候,其返回的结果形状是完全不同的,一个返回的客户的3列数据,而一个返回的是订单的3列的数据。

这个代码就是来看如何为这种存储过程生成映射,并且如何使用这样的函数来获取数据。

首先定义一个存储过程,就使用前面的那个SQL语句。
接着,就是根据这个存储过程,创建映射函数了。不过在这之前,首先得要为不同的结果形状生成两个不同的实体类,也就是所谓的投影形状。定义如下:
CREATE PROCEDURE VariableResultShapes(@Shape int) AS if(@Shape = 1) select CustomerID, ContactTitle, CompanyName from Customers else if(@Shape = 2) select OrderID, ShipName from Orders
现在才是映射函数的定义,代码如下:
[Function(Name = "dbo.VariableResultShapes")] [ResultType(typeof(CustomerResult))] [ResultType(typeof(OrderResult))] public IMultipleResults VariableResultShapes( [Parameter(Name = "Shape", DbType = "Int")] System.Nullable<int> shape) { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), shape); return ((IMultipleResults)(result.ReturnValue)); }
可以使用类似如下的代码调用这种映射函数来访问数据:
NorthwindDataContext db = new NorthwindDataContext(@"C:/LINQ/Northwind.mdf"); Console.WriteLine("Customers:"); IMultipleResults Results = db.VariableResultShapes(1); foreach (var CustomerObject in Results.GetResult<CustomerResult>()) { Console.WriteLine("CustomerID={0} ContactTitle={1}", CustomerObject.CustomerID, CustomerObject.ContactTitle); Thread.Sleep(50); } Console.WriteLine(); Console.WriteLine("Orders:"); Results = db.VariableResultShapes(2); foreach (var OrderObject in Results.GetResult<OrderResult>()) { Console.WriteLine("OrderID={0} ShipName={1}", OrderObject.OrderID, OrderObject.ShipName); Thread.Sleep(50); }
需要注意的是:为GetResult指定元素类型时,务必要与所传递的@Shape参数值一致,否则就可能产生错误。

【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器状态空间平均模型的建模策略。该方法通过对系统中多个相互耦合的DC-DC变换器进行统一建模,构建出整个微电网的集中状态空间模型,并在此基础上实施线性化处理,便于后续的小信号分析与稳定性研究。文中详细阐述了建模过程中的关键步骤,包括电路拓扑分析、状态变量选取、平均化处理以及雅可比矩阵的推导,最终通过Matlab代码实现模型仿真验证,展示了该方法在动态响应分析和控制器设计中的有效性。; 适合人群:具备电力电子、自动控制理论基础,熟悉Matlab/Simulink仿真工具,从事微电网、新能源系统建模与控制研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网中多变换器系统的统一建模方法;②理解状态空间平均法在非线性电力电子系统中的应用;③实现系统线性化并用于稳定性分析与控制器设计;④通过Matlab代码复现和扩展模型,服务于科研仿真与教学实践。; 阅读建议:建议读者结合Matlab代码逐步理解建模流程,重点关注状态变量的选择与平均化处理的数学推导,同时可尝试修改系统参数或拓扑结构以加深对模型通用性和适应性的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值