C#中自定义查询的Web服务

时间:2011-06-12 11:23:17

标签: asp.net web-services wcf-data-services dbmigrate

我们正在从ASP.NET / SQL服务器设置迁移到rails / mysql设置。因此,我需要将数据从我的SQL Server数据库中传输出来,但是我不能直接将它从SQL Server移动到mysql,因为有些东西需要在每个记录的基础上通过rails来完成过滤。

由于需要处理此过程的方式,我认为最好的方法是让我的rails Web服务器从ASP.NET服务器使用Web服务并让它从SQL Server数据库中提取记录。在rails服务器修改数据后,它可以将每条记录保存在数据库中。

我想返回一个简单的“select * from table_name”查询,该查询由rails服务器确定。简而言之,我希望rails服务器将“select * from customers”发送到ASP.NET服务器,然后asp.net服务器通过XML或json返回数据列表。

这可能吗?我知道可以通过Web服务返回数据,但我想知道是否可以在使用服务器上确定sql查询。

谢谢!

3 个答案:

答案 0 :(得分:1)

ServiceStack还可以轻松实现,只需1行代码,您的网络服务就可以自动返回 XML,JSON,CSV,JSV 甚至 HTML中的数据,以便于阅读数据的表格视图。

查看Northwind data example,其中只需以下代码即可返回客户POCO列表:

    public class CustomersService : RestServiceBase<Customers>
    {
            public IDbConnectionFactory DbFactory { get; set; }

            public override object OnGet(Customers request)
            {
              return new CustomersResponse { Customers = DbFactory.Exec(dbCmd =>
                    dbCmd.Select<Customer>()) 
            };
    }

然后只需上面的代码就可以调用webservice返回以下所有内容:

答案 1 :(得分:0)

您应该查看WCF Data ServicesADO.NET Data Services
我认为它符合您的需求。

对于表格Customers,您对DataService的查询将为http://localhost:12345/DATABASE_NAME.svc/Customers,您可以轻松地向查询添加一些过滤表达式。

答案 2 :(得分:0)

我根本不会去网络服务。

您可以以.cvs(平面文件目标)格式从SQL-SERVER导出数据,然后从RoR解析它。我不知道怎么做,但显然RoR在框架中内置了.cvs IO工具。

如果您使用Web服务拥有大量数据,则效率远低于创建.cvs文件并在本地使用以进行插入。