求大神支招!-----跨节点并行处理的合并问题
数据表分配在不同的站点,当用户输入一条复杂的查询sql语句,通过解析模块分成几个子语句,采用并行处理方式,让子语句到对应的各站点上去执行,提高处理的速度。代码如下:
问题2:linq合并那,字段我都转换了类型,但是要写成一个通用模块的话,希望能从Oracle数据库(用的Oracle)中获取类型自动转换c#中类型,该怎么实现啊???
//源sql(应用中复杂的sql包含十多张表)
string sql = "Select neflow.id,ne.depart from materialneedflow neflow left outer join materialneed ne on ne.id=neflow.applyid where ne.id=1 and neflow.id=1";
//解析成两条sql,分别去对应的站点执行
string sql11 = "select id,applyid from materialneedflow where id=1";
string sql12 = "select id,depart from materialneed where id=1";
DataSet dataset = new DataSet();
Dictionary<string, string[]> dict = new Dictionary<string, string[]>();
dict.Add("materialneedflow", new string[] { "Data Source=202.193.75.136/ORCL;User ID=site4;Password=123456", sql11 });
dict.Add("materialneed", new string[] { "Data Source=202.193.74.48/ORCL;User ID=site4;Password=123456", sql12 });
//并行地到两个站点去执行,问题1:并行方面能不能修改默认配置呢?
var tables = (from x in dict.AsParallel()
select Query(x)).ToList();
Dictionary<string, DataTable> dict1 = new Dictionary<string, DataTable>();
for (int i = 0; i < tables.Count; i++)
{
dict1.Add(tables[i].TableName, tables[i]);
}
//对查出来的两个结果集合并;问题2:这里字段我都转换了类型,但是要写成一个通用模块的话,希望能从Oracle数据库(用的Oracle)中获取类型自动转换c#中类型,该怎么实现啊???
var result = from neflow in dict1["materialneedflow"].AsEnumerable()
join ne in dict1["materialneed"].AsEnumerable()
on Convert.ToDecimal(IsDBNull(neflow["applyid"])) equals Convert.ToDecimal(ne["id"])
select new
{
status = Convert.ToDecimal(neflow["id"]),
orderdate = Convert.ToDecimal(IsDBNull(ne["depart"]))
};
static DataTable Query(KeyValuePair<string, string[]> dict)
{
string host = dict.Value[0];
string sql = dict.Value[1];
using (OracleConnection conn = new OracleConnection(host))
{
OracleDataAdapter da = new OracleDataAdapter(sql, conn);
conn.Open();
DataSet ds = new DataSet();
da.Fill(ds);
DataTable table = ds.Tables[0];
table.TableName = dict.Key;
return table;
}
}
public static object IsDBNull(object value)
{
if (value == DBNull.Value)
{
return null;
}
else
{
return value;
}
}
问题1:并行方面能不能修改默认配置呢?问题2:linq合并那,字段我都转换了类型,但是要写成一个通用模块的话,希望能从Oracle数据库(用的Oracle)中获取类型自动转换c#中类型,该怎么实现啊???
...全文
相关推荐
外教支招_英语面试问题与回答.doc
外教支招_英语面试问题与回答.doc
人大法学专业就业问题导师支招.doc
人大法学专业就业问题导师支招.doc
支招网问答系统/基于thinkphp的问答系统
支招网问答系统,基于thinkphp内核开发的问答系统源码。支招网问答系统将各种问题,发布帖子,网友一起支招,是一个互助友爱的问答社区,支招解答,一起成长;可以在后台单页管理那里修改;发布帖子,网友一起支招。
支招网问答系统/基于thinkphp的问答系统源码
支招网问答系统,基于thinkphp内核开发的问答系统源码。支招网问答系统将各种问题,发布帖子,网友一起支招,是一个互助友爱的问答社区,支招解答,一起成长;可以在后台单页管理那里修改;发布帖子,网友一起支招。 特别注意:由于thinkphp版本比较低,所以PHP版本建议不要高于 5.4(含) 上传源码到网站根目录,导入数据库文件:sql.sql 配置数据库连接:/Conf/config.php 设置伪静态规则为 thinkphp 后台:/admin.php 账号:admin 密码:admin888
支招网问答系统/基于thinkphp的问答系统源码/详细搭建教程
支招网问答系统,基于thinkphp内核开发的问答系统源码。支招网问答系统将各种问题,发布帖子,网友一起支招,是一个互助友爱的问答社区,支招解答,一起成长;可以在后台单页管理那里修改;发布帖子,网友一起支招。


LINQ