首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用POCO做贴吧?

用POCO做贴吧?
EN

Stack Overflow用户
提问于 2016-05-17 14:42:12
回答 1查看 220关注 1票数 0

我有一个实体框架对象(首先是代码),所以它本质上是一个POCO。我想把它抛到WebAPI服务上(WebAPI是MVC)。

  • 我需要调用的目标.net框架是4.0 (aspx),这是不能更改的。
  • 接到呼叫的WebAPI是4.5.1,这是最新的MVC和EF版本,但它是跨线的,所以没有版本冲突。
  • 包含我想要传输的对象的EF类项目也是4.5.1,但是我对它没有任何问题(在aspx项目中使用了它,而且它奇迹般地没有问题)。
  • 当嵌入到4.0项目中时,调用所有EF方法和DBContext调用都是完美无缺的,因此这也不是一个问题(我们希望通过web服务,而不是直接的EF调用)。
  • EF代码优先模型仅作为POCO使用。例如,我们使用一个List (of EF_Obj)绑定到DataGrids,因此,同样不存在版本冲突。

我已经成功地获得了一个简单的get调用,它使用以下命令:

代码语言:javascript
复制
Using client = New WebClient()
    responseString = client.DownloadString(String.Format("http://localhost:1234/MyURLGet/{0}", txtValue.Text.Trim()))
    myPOCO_Class = Newtonsoft.Json.JsonConvert.DeserializeObject(Of MyPOCO_EF_obj)(responseString)
End Using

这个很好用。当我想插入数据库时,问题是试图将MyPOCO_EF_Obj附加到帖子的主体上。

到目前为止,我发现的是这一点,但它不允许我附加POCO类,只有字符串:

代码语言:javascript
复制
 Using client = New WebClient()
    'assemble the data
    Dim values As New NameValueCollection
    values("value") = txtValue.Text.Trim()
    values("description") = txtDescription.Text.Trim()

    Dim response = client.UploadValues("http://localhost:1234/MyURLPOST/{0}", userName), values)
    retVal = Encoding.[Default].GetString(response)
End Using

这段代码的问题是,当它到达另一边时,values就会被捕获,但是没有一个数据与它相匹配。

代码语言:javascript
复制
   public string Post(string username, [FromBody] System.Collections.Specialized.NameValueCollection values) { //etc }

我更愿意抛出POCO对象并在那里处理它,但是发送名称/值对也会有效。

尽管如此:

  1. 用POCO [FromBody]可以做到这一点吗?如果是这样的话,是怎么做的?
  2. 为什么我的价值观没有传递给POST处理程序?

编辑:供参考,我目前正在看这个所以的问题和答复:

HTTP request with post

EN

回答 1

Stack Overflow用户

发布于 2016-05-17 17:34:12

正如链接中提到的,有许多方法可以做到这一点,但是添加如何使用restSharp。使用nuget安装restsharp,创建一个简单的类如下所示

代码语言:javascript
复制
public class SampleRestClient
{
    private readonly RestClient _client;        

    private readonly string _url = "http://xyz/"; //URL of the API  

    public IRestResponse Submit(SAmpleViewModel model)
    {
        _client = new RestClient(_url);
        var request = new RestRequest("api/Submit", Method.POST) { RequestFormat = DataFormat.Json };

        request.AddBody(model);

        var response = _client.Execute(request);
        return response;
    }
}       

现在,您可以在需要的地方调用Submit方法。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37279291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档