WCF问题

msf108 2015-12-09 12:44:13
WCF服务中定义:
[OperationContract]
List<表A> GetList();

实现:
public List<表A> GetList()
{
SqlDataContext dc = new SqlDataContext();
return dc.表A.ToList();
}
上面例子在客户端可以正常调用 GetList()访问数据。

现在问题是我数据库中有几十个表,想把上面例子中的“表A”改成变量,然后在GetList中加入一个String TabName变量,对应“表A”,客户端调用时输入需要的TabName即可访问指定的表,即服务改成

List<变量> GetList(String TabName)

请问这样该如何实现?
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
四大皆空相 2015-12-09
  • 打赏
  • 举报
回复
对于WCF传输的数据,必需支持WCF序列化,一些不支持序列化的类型,是无法进行WCF传输的。 [DataContract] [DataMember] 要注意在类上添加。
四大皆空相 2015-12-09
  • 打赏
  • 举报
回复
所有表,都继承一个基类。比如: public class TableBase{} public class Table_One: TableBase{} List<TableBase> GetList(sting tabName) { TableBase rtVal = null; if(tabName == "Table_One") rtVal = new Table_One(); return rtVal; }
全栈极简 2015-12-09
  • 打赏
  • 举报
回复
用泛型,List<T> 。
msf108 2015-12-09
  • 打赏
  • 举报
回复
public System.Data.Linq.Table<物料分类> 物料分类 { get { return this.GetTable<物料分类>(); } } public System.Data.Linq.Table<物品资料> 物品资料 { get { return this.GetTable<物品资料>(); } } 。。。。。。。。。。。 } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.物料分类")] [global::System.Runtime.Serialization.DataContractAttribute()] public partial class 物料分类 : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); private int _编号; private string _名称; private string _上级; 。。。。。。。。。。。。。 linq to sql自动生成的实体如上
四大皆空相 2015-12-09
  • 打赏
  • 举报
回复
不清楚你的orm是怎么工作的。 一般的做法是这样: [DataContract] [TableName("Table_One")] //your defined attribute public class Table_One:TableBase {} List<TableBase> GetList(Type t) { TableName tn = Attribute.GetCustomAttributes(t, typeof(TableName)); string tableName = tn.Name; object[] db_recorders = YourDB_Orm.GetDatas(tableName); List<TableBase> rtVale =new List<TableBase>(db_recorders); return rtval; } 这种方法是可以的,但印象中,wcf对 Type 是不支持的。 也没有关系,我们可以把 Type 转换成byte[], 一样可以运行。 顺便说一句,WCF一般是不会采用同步返回方式的,如你的GetList(),这将造成客户端阻塞,一旦网络异常,客户端会被卡死的。 可以采用异步方式来实现。
msf108 2015-12-09
  • 打赏
  • 举报
回复
刚才仔细看了下,2楼的办法是在每个表实例都做个判断,我的实例是自动生成的,这方法不行哦
msf108 2015-12-09
  • 打赏
  • 举报
回复
谢谢楼上几位! 我的数据库已经用Ling To Sql映射并序列化了(O/R设计器自动生成的),3楼的办法就是我要的,先试试,再次感谢!!

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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