首页 > 解决方案 > 我们什么时候应该在 C# 中定义一些以“TryGet”开头的扩展?

问题描述

我正在研究 ASP.NET,我有两种方法可以在数据库中获取项目:

  1. 首先:
public Post Get(string postId)
    => !string.IsNullOrEmpty(postId) 
       ? _dbContext.Posts.SingleOrDefault(x => x.Id == postId) : null;

用法:

var post = Get("someid");

if (post != null)
{
    // do stuff...
}
  1. 第二:
public bool TryGetPost(string postId, out Post post)
{
    if (!string.IsNullOrEmpty(postId))
    {
        post = _dbContext.Posts.SingleOrDefault(x => x.Id == postId);

        return post != null;
    }

    post = null;
    return false;
}

用法:

if (TryGetPost("someid", out Post post))
{
    // do stuff...
}

你能教我什么时候使用第一个/第二个吗?

还有比他们更好的方法吗?

标签: c#

解决方案


正如 KISS 原则所说,它应该很简单。假设您必须从控制器返回 View,示例应如下所示:

[HttpGet]
public ActionResult GetItem(int postId)
{
  var post = _dbContext.Posts.FirstOrDefault(x => x.Id == postId);

  if (post != null)
  {
    return View(post);
  }

  return View();
}

这也有许多 mod 和良好实践,但这足以从数据库中获取数据并将其显示到 View。

当你保存数据做数据库时,你应该使用 POST 方法,如果你只得到一些东西使用 GET。您还可以使用 PUT 方法修改数据库中的现有数据。


推荐阅读