【问题标题】:Retrieving Records and Saving to a Database in a single C# Web Service在单个 C# Web 服务中检索记录并保存到数据库
【发布时间】:2016-10-08 12:22:53
【问题描述】:

您好,我正在尝试将 azure 中的 C# web 服务与 get 和 post 同时结合,想法是通过 uniqueCDcode 获取 CD 的详细信息,并且 web 服务仅输出 json 信息和 uniqueCDcode 需要要存储在不同的表 CDClicked 中,我会得到所有 clickedCD 的列表,因此我可以将最后 50 个作为趋势等,但似乎并没有真正让它工作。这就是我目前所拥有的

    //// WS# 00002 GET THE ALBUM DETAILS
    [Route("api/Music/Album/{uniqueCDcode}")]
    public HttpResponseMessage GetAlbum(int uniqueCDcode)
    {
        return Request.CreateResponse(HttpStatusCode.OK, 
            new { AlbumMusic = db.Music
                .Where(am => am.uniqueCDcode == uniqueCDcode);

        db.CDClicked.Add(uniqueCDcode);

    }

【问题讨论】:

  • 想要做的是当用户单击按钮以获取网站中 CD 的更多详细信息时,网络服务会从数据库中返回该信息(顶部工作正常)和网络服务还将用户单击的 CD 存储在数据库的不同表中(uniqueCDcode)
  • 您需要检索您的记录,进行保存,然后返回响应。第二部分的 Add() 方法调用不起作用,因为 return 语句正在返回一个值,然后停止执行您的服务。你的逻辑需要在return语句之前完成。

标签: c# json azure get


【解决方案1】:

您需要检索您的记录/进行保存,然后返回响应。对 dbContext (第二部分)的 Add() 方法调用不起作用,因为 return 语句首先返回一个值,然后停止执行您的服务,因此它永远不会到达第二部分。你的逻辑需要在return语句之前完成。

例如:

[Route("api/Music/Album/{uniqueCDcode}")]
public HttpResponseMessage GetAlbum(int uniqueCDcode)
{
    db.CDClicked.Add(uniqueCDcode);

    return Request.CreateResponse(HttpStatusCode.OK, 
        new { AlbumMusic = db.Music
            .Where(am => am.uniqueCDcode == uniqueCDcode )});
}

代码中还有一些格式问题。您的大括号和括号不匹配(至少在您粘贴到 SO 中的代码中)。我在下面的答案中更正了。

注意:由于与飓风有关的问题,我目前无法测试代码,但这是让您重新开始的一般概念。

【讨论】:

  • 非常感谢您的回答,如果我想将日期和时间存储在单独的列中以及我需要添加什么?到 db.CDClicked.Add(uniqueCDcode);我忘了将其添加到原始问题中。
  • 哇......这完全是另一个新问题。如果我假设您使用的是实体框架:您需要将该列添加到您的数据库/模型中,然后创建该模型的一个实例并将其传递给您的 add 方法,而不仅仅是 uniqueCDcode。或者您可以在数据库中添加一个默认存储日期时间值的列,那么您根本不需要修改您的 C# 代码。您是否使用实体框架,如果是,您是使用实体优先、代码优先还是数据库优先?
  • 实际上感谢您的想法“在数据库中添加一个默认存储日期时间值的列”工作得很好。我使用了默认的时间戳功能。
  • 对不起,我想我不小心点击了它,它工作正常:-)
猜你喜欢
  • 2012-04-15
  • 1970-01-01
  • 2018-01-09
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
相关资源
最近更新 更多