我对NoSQL数据库很陌生,因为我一直使用SQL。我对如何插入包含对单独文档对象的引用的实体存在问题。根据最佳实践等这是代码(去除了不必要的位)
MongoDB的实体(存储库可以包含许多项目,但是最经常查询,添加,更新和删除的是项目实体,因此没有引用存储库中的项目集合,而是相反)
//entities are not *that* small, each contains several primitive properties
public class Repository
{
[BsonId, BsonRepresentation(BsonType.ObjectId)]
public ObjectId Id { get; set; }
public string Name { get; set; }
}
public class Project
{
[BsonId, BsonRepresentation(BsonType.ObjectId)]
public ObjectId Id { get; set; }
public string Name { get; set; }
public ObjectId RepositoryId { get; set; }
}
有一个API端点接受如下所示的DTO:
//DTOs are not *that* small, each contains several primitive properties
public class ProjectDto
{
public string Name { get; set; }
public Repository Repository { get; set; }
}
public class Repository
{
public string Name { get; set; }
}
控制器接受此ProjectDTO并将其插入数据库,有3个目标]:
根据此文档,我应用中的数据库访问发生在服务类中https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mongo-app?view=aspnetcore-3.0&tabs=visual-studio
现在,问题#1:
将DTO传递给Service类,然后将其映射到实体并执行插入等是一种很好的模式吗?别这样,但是也许:)
无论如何,我都可以通过以下方式实现目标:
问题2:
可以吗?
预先致以问候和感谢。
我对NoSQL数据库很陌生,因为我一直使用SQL。我对如何插入包含对单独文档对象的引用的实体存在问题。根据最佳实践等。...
您可以在here中查看mongo文档中的更新。检查IsUpsert选项,我认为它可以实现您想要的功能: