c# - C# ASP.NET | 将数据保存到 MongoDB 时,我使用模型类有什么意义吗?
问题描述
我已经开始为我正在构建的应用程序编写一个 ASP.NET Web API。我已经设置了一个MongoCRUD.cs
类来将应用程序发出的 POST 请求中的数据保存到 MongoDB 数据库(和其他 CRUD 操作)。
我(按照初学者教程)还设置了一个Submission.cs
模型类作为我想要保存到数据库的对象的蓝图。但是,现在我已经实现了 中的InsertRecord()
方法MongoCRUD.cs
,我看不到这个模型的用途。
MongoCRUD.cs:
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebAPI.Services
{
public class MongoCRUD
{
private IMongoDatabase db;
public MongoCRUD(string database)
{
var client = new MongoClient();
db = client.GetDatabase(database);
}
public void InsertRecord<T>(string table, T record)
{
var collection = db.GetCollection<T>(table);
collection.InsertOne(record);
}
}
}
提交.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Policy;
using System.Web;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace WebAPI.Models
{
public class Submission
{
[BsonId]
public string SubId { get; set; }
public string Url { get; set; }
public string Text { get; set; }
}
}
提交控制器.cs:
using WebAPI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI.Services;
using System.IO;
using System.Web.Script.Serialization;
namespace WebAPI.Controllers
{
public class SubmissionsController : ApiController
{
MongoCRUD db = new MongoCRUD("myDb");
Submission[] submission = new Submission[] {
new Submission { SubId = "test", Url = "test", Text = "test" };
};
public IEnumerable<Submission> GetAllSubmissions()
{
//add MongoCRUD functionality for load record
return submission;
}
public IHttpActionResult GetSubmission(string id)
{
//add MongoCRUD functionality for load record
return Ok();
}
public IHttpActionResult PostSubmission(object body)
{
//validate body
db.InsertRecord("Submissions", body);
return Ok();
}
}
}
如您所见PostSubmission()
,POST 请求的主体可以直接保存到数据库中,所以我的问题是使用模型Submission.cs
而不是仅使用对象类型有什么好处?
我在遍历body
对象以访问其值(用于执行验证等)时遇到了一些麻烦,所以我唯一的猜测是使用模型可以更容易地访问值?
解决方案
object
是所有类的基本类型(参见 - https://docs.microsoft.com/en-us/dotnet/api/system.object?view=netcore-3.1)。
C# 是一种面向对象的语言,因此我们尝试根据我们的业务领域对类进行建模,这使得推理代码更容易。
就像您说的那样,您可以拥有可用于验证传入控制器的数据的模型,您也可能希望在与您的业务领域相关的模型上添加额外的方法。
例如
class CreditCard
{
string CardNumber { get;set; }
string Csv { get;set; }
bool ValidateChecksum()
{ }
}
推荐阅读
- linux - AddressSanitizer:分离调试信息后报告中没有匹配的源文件行
- python - 调用 .py 文件时 Excel 会更改当前工作目录
- php - iframe中的419页过期的laravel页面
- python - 我需要从 H1 SPAN no class with Beautifulsoup 中提取文本并删除括号
- reactjs - 如何使用相同的函数更新重用变量而不将其隔离到另一个组件中?
- php - 如何使 php curl 多个 api 调用更快?
- c - Postgres ECPG:在 main() 之外添加一个函数会破坏程序
- python - 在 Jupyter Lab 上创建新环境时发生冲突
- python - 我试图运行显示值错误的张量流代码
- python - 大量使用 Python Cassandra 驱动程序。查询数