来问个怪问题。。。。。。。。。。。。。。。。。加分了,都来看看。。。。。。。。。

yezie 2009-06-18 04:31:30
数据库有4张表,其中大家都有的字段有20个,然后只有几个字段是每表特有的
别骂表设计太烂,哈哈,现不考虑改表结构。

4表都拉到DataContext里,现在url参数接收到的表名是string的,
每次查询、修改都要switch + 4个case,

怎么办??

代码比如:
swicth(type)
{
case "table1": grid.DataSource = datacontext.table1.Take(5); break;
case "table2": grid.DataSource = datacontext.table2.Take(5); break;
case "table3": grid.DataSource = datacontext.table3.Take(5); break;
case "table4": grid.DataSource = datacontext.table4.Take(5); break;
}
...全文
155 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪狼孤竹 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yezie 的回复:]
引用 6 楼 KK3K2005 的回复:
手写DATACONTEXT类 或者自己写个 静态方法 封装

class xxx{

pubic static xxx get(type){

swicth(type)
{
  case "table1": return datacontext.table1.Take(5);
  case "table2": return datacontext.table2.Take(5);
  ...

}

}

}


这里4个return的类型都是不一样的,xxx不是固定,怎么实现?
[/Quote]

那你找一个大家的基类定义就可以了,使用的时候再拆箱,应该可以的!
老僧的小九九 2009-07-23
  • 打赏
  • 举报
回复
private IEnumerable GetDataSource(string tableName)
{
DataClasses1DataContext db = new DataClasses1DataContext();
var metaTable = db.Mapping.GetTables().Where(o => o.TableName == tableName).SingleOrDefault();

var table = db.GetTable(metaTable.RowType.Type);

IEnumerable query = db.ExecuteQuery(table.ElementType, "select top 5 * from " + tableName);

return query;
}
chengcheng1253 2009-07-17
  • 打赏
  • 举报
回复
up
yezie 2009-06-26
  • 打赏
  • 举报
回复
太勉强了。。。。。。。。。。。
而且不一定都是datagrid用到。。。。。。。。。。。。。。。。。
KK3K2005 2009-06-19
  • 打赏
  • 举报
回复

或者把 grid对象传进去

呵呵 反正这样实现是比较勉强的
yezie 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 KK3K2005 的回复:]
手写DATACONTEXT类 或者自己写个 静态方法 封装

class xxx{

pubic static xxx get(type){

swicth(type)
{
case "table1": return datacontext.table1.Take(5);
case "table2": return datacontext.table2.Take(5);
...

}

}

}
[/Quote]

这里4个return的类型都是不一样的,xxx不是固定,怎么实现?
KK3K2005 2009-06-18
  • 打赏
  • 举报
回复
手写DATACONTEXT类 或者自己写个 静态方法 封装

class xxx{

pubic static xxx get(type){

swicth(type)
{
case "table1": return datacontext.table1.Take(5);
case "table2": return datacontext.table2.Take(5);
...

}

}

}
ansiboy 2009-06-18
  • 打赏
  • 举报
回复
你可以加个类型转换的吧。例如(Table<Customer>)table
yezie 2009-06-18
  • 打赏
  • 举报
回复
1楼的方法参数里要写具体类型而不是字符串
2楼的最后是ITable类型的,我拿来不能用呢。。。
ansiboy 2009-06-18
  • 打赏
  • 举报
回复
var metaTable = db.Mapping.GetTables().Where(o => o.TableName == "Customers").SingleOrDefault();
Debug.Assert(metaTable != null);
var table = db.GetTable(metaTable.RowType.Type);

顺便打个广告,ALinq -- 支持多种数据库的Linq to DB,绝对好用,官网:http://www.alinq.org
dsr456 2009-06-18
  • 打赏
  • 举报
回复
datacontext里面应该有通过名称检索表的功能吧

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧