使用ADO访问REST服务

时间:2012-07-31 15:27:23

标签: c# rest repository xamarin.android asp.net-web-api

我正在使用c#中的monodroid应用程序,并试图利用Generic Repository以一致的方式访问我的本地SQLite数据库和远程REST WS。

由于SQLiteDataReader实现了IDataReader,我想知道是否有办法以相同的方式访问从Web-Api MVC4 REST Web服务器返回的有效负载(使用IDataReader)。这不是ADO.NET的重点吗?

目前,WS返回序列化的JSON,但是如果需要支持IDataReader,我可以更改它。

此外,关于如何使用SQLite DB和REST WS使Generic Repository工作(在MonoDroid的范围内)的任何其他建议都会很棒。

这是一些代码......

public interface IDataMapper<T>
{
  T Map(IDataReader reader);
}

public interface IRepository<T>
{
  List<T> Read(ICond cond);
  T FindOne(ICond cond);
}

public class RepositorySQL<T> : IRepository<T>
{
  private AndroidDB _dbLayer;
  private IDataMapper<T> _dataMapper;

  public RepositorySQL(IDataMapper<T> dataMapper)
  {
    _dbLayer = new AndroidDB();
    _dataMapper = dataMapper;
  }

  public List<T> Read(ICond cond) {...}
  public T FindOne(ICond cond) {...}
}

public class RepositoryREST<T> : IRepository<T>
{
  private WSBuffer<T> _wsBuffer;
  private IDataMapper<T> _dataMapper;

  public RepositoryREST(IDataMapper<T> dataMapper)
  {
    _wsBuffer = new WSBuffer<T>();
    _dataMapper = dataMapper;
  }

  public List<T> Read(ICond cond) {...}
  public T FindOne(ICond cond) {...}
}

我想也许可以实现一些ADO接口(比如IDataReader)和 将反序列化的结果集包装在实现类中?

我真的非常想要一致性!谢谢你的帮助,你们总是很棒。

0 个答案:

没有答案