c# - 我们什么时候应该在 C# 中定义一些以“TryGet”开头的扩展?
问题描述
我正在研究 ASP.NET,我有两种方法可以在数据库中获取项目:
- 首先:
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...
}
- 第二:
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...
}
你能教我什么时候使用第一个/第二个吗?
还有比他们更好的方法吗?
解决方案
正如 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 方法修改数据库中的现有数据。
推荐阅读
- javascript - 将数组合并为对象数组
- vba - 如何检测电子邮件何时在一组特定文件夹中移动?
- stanford-nlp - 词形还原不适用于以大写字母开头的单词
- ajax - 如何在 Ajax 调用/HTML 阻塞期间在旋转 gif 上方添加文本
- configuration - Drupal 8 可翻译配置
- java - java 8 流上的多个 .sorted(...) 调用
- proxy - HaProxy 作为带有底层代理列表的 HttpProxy
- android - 在 RecyclerView 项上显示空值的上下文菜单
- python - 没有名为“virtualenv”的模块
- javascript - 如何将 Node.js 异步流回调转换为异步生成器?