日期:2014-05-18  浏览次数:20749 次

WCF 强类型数据集 fill 表返回问题 高分100
类型化的数据集

C# code


    public class Service1 : IService1
    {
        public DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers()
        {
            DataEntityTier.NorthwindDataSet northwind = new DataEntityTier.NorthwindDataSet();

            DataEntityTier.NorthwindDataSetTableAdapters.CustomersTableAdapter CustomersTableAdapter1
                = new DataEntityTier.NorthwindDataSetTableAdapters.CustomersTableAdapter();

            CustomersTableAdapter1.Fill(northwind.Customers); 
            return northwind.Customers; 
        }
    }


--------------------------------

    [ServiceContract]
    [XmlSerializerFormat] 
    public interface IService1
    {
        [OperationContract]
        DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers();
    }


客户端
            using (Service1Client poxy = new Service1Client())
            {
                dataGridView1.DataSource = poxy.GetCustomers();
            }
   




运行结果返回一张空表 !!!

请教高人

------解决方案--------------------
lz 认证和数据源或者数据协议神马的没啥关系。OData也可以基于Https,证书做更安全的验证

不用 OData 直接用 EF 用 BasicHttpBinding 也可以的。用强类型的 DataSet 也可以的。

但是强类型的 DataSet 类型比较复杂,序列化有可能有问题不过没试过。

我只是建议你使用EF,因为EF比DataSet更容易序列化。甚至像我例子里的那样,可以做到POCO的简单类型。

http://blog.csdn.net/fangxinggood/article/details/6452549


------解决方案--------------------
强类型的 DataSet 类型比较复杂,序列化有可能有问题 这是对的; 可以将它 移流的方式发回来

或者

C# code


    public class Service1 : IService1
    {
        public DataTable GetCustomers()
        {
            DataEntityTier.NorthwindDataSet northwind = new DataEntityTier.NorthwindDataSet();

            DataEntityTier.NorthwindDataSetTableAdapters.CustomersTableAdapter CustomersTableAdapter1
                = new DataEntityTier.NorthwindDataSetTableAdapters.CustomersTableAdapter();

            CustomersTableAdapter1.Fill(northwind.Customers); 

            Datatable dt = new DataTable();
            dt.Tablename = "jj"; 

            dt = northwind.Customers.copy();          

            return dt; 
        }
    }


     [ServiceContract]
    [XmlSerializerFormat] 
    public interface IService1
    {
        [OperationContract]
        DataTable GetCustomers();
    }