【发布时间】:2021-02-09 04:10:46
【问题描述】:
您好,我想在我的程序中插入多个数据并避免重复。我已经实现了使用 asp.net core web api 向 mongoDB 插入多个数据的代码,它工作正常。我尝试了很多东西,但仍然找不到在插入多条记录时避免重复记录的方法。你们能帮帮我吗:)
我想避免使用employeeid 插入重复项。
这是我的控制器
using HelloApi.Models;
using HelloApi.Services;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace HelloApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
[Produces("application/json")]
public class EmployeeController : ControllerBase
{
private readonly EmployeeService _employeeService;
public EmployeeController(EmployeeService employeeService)
{
_employeeService = employeeService;
}
//.....................................Create..............................................
public Task Create(IEnumerable<Employee> employees)
{
return _employeeService.Create(employees);
}
}
}
这是我的模型类
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using System.ComponentModel.DataAnnotations;
namespace HelloApi.Models
{
public class Employee
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
[Key]
public string Id { get; set; }
[Required]
[BsonElement("employeeid")]
public string employeeid { get; set; }
[Required]
[BsonElement("firstname")]
public string firstname { get; set; }
[Required]
[BsonElement("lastname")]
public string lastname { get; set; }
[Required]
[BsonElement("age")]
public int age { get; set; }
[Required]
[BsonElement("address")]
public string address { get; set; }
[Required]
[BsonElement("telephone")]
public int telephone { get; set; }
}
}
这是我的服务类
using HelloApi.Models;
using MongoDB.Driver;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace HelloApi.Services
{
public class EmployeeService
{
private readonly IMongoCollection<Employee> _employee;
public EmployeeService(IHelloApiDatabaseSettings settings)
{
var client = new MongoClient(settings.ConnectionString);
var database = client.GetDatabase(settings.DatabaseName);
_employee = database.GetCollection<Employee>(settings.employeeCollectionName);
}
//.....................................Create..............................................
public Task Create(IEnumerable<Employee> employees)
{
return _employee.InsertManyAsync(employees);
}
}
}
这是 Postman 中的 POST 请求,它工作正常,但提交重复。
【问题讨论】:
-
删除重复项..?哪些属性...?您是否要删除重复的employeeid 或多个属性在API 编写您自己的逻辑并向客户端返回错误消息
-
嗨,是的,我想通过查看 employeeid 来删除重复项。我不想两次插入相同的employeeid。
-
嗨@Erik Khanpara 也许你可以帮我解决这个问题:)
-
public Task Create(IEnumerable
employees) { // var employee get by id for employeeid //如果发现员工用现有员工创建新集合 //插入新员工 //更新现有员工员工} -
嗨@PrashanthReddy 我尝试以您的方式实现这一点,但在插入多个文档时仍然难以进行更新。你能给我一个实现的例子吗?
标签: c# mongodb asp.net-core asp.net-core-webapi