Драйвер Mongodb C#: обновление предоставлено только поля, включая установку некоторых полей на NULLC#

Место общения программистов C#
Ответить
Anonymous
 Драйвер Mongodb C#: обновление предоставлено только поля, включая установку некоторых полей на NULL

Сообщение Anonymous »

Я использую MongoDB с C# (mongodb.driver), и я хочу обновить только поля, представленные в моей модели API. Мой текущий подход работает для обновления значений, но я не могу установить поле (строка, число или объект.var updateBuilder = Builders.Update;
var updates = new List();

foreach (var prop in typeof(ExportShipmentExBond).GetProperties())
{
if (!prop.CanRead) continue;

if (prop.Name == nameof(ExportShipmentExBond.ExportShipmentExBondId) ||
prop.Name == nameof(ExportShipmentExBond.ExportShipmentExBondCreatedDate) ||
prop.Name == nameof(ExportShipmentExBond.ExportShipmentExBondCreatedBy))
continue;

var newValue = prop.GetValue(model);

if (newValue != null)
{
updates.Add(updateBuilder.Set(prop.Name, newValue));
}
}

if (updates.Count > 0)
{
var updateDefinition = updateBuilder.Combine(updates);
await _collection.FindOneAndUpdateAsync(
filter,
updateDefinition,
new FindOneAndUpdateOptions
{
ReturnDocument = ReturnDocument.After
});
}
< /code>
model < /p>
using System.Text.Json.Serialization;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

namespace test.Models
{
public class ExportShipmentExBond
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string? ExportShipmentExBondId { get; set; }
[BsonRepresentation(BsonType.ObjectId)]
public string? ExporterMasterId { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
[BsonIgnoreIfNull(false)]
public string? ExportShipmentExBondBENo { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
[BsonIgnoreIfNull(false)]
public DateTime? ExportShipmentExBondBEDate { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
[BsonIgnoreIfNull(false)]
public string? ExportShipmentExBondVessel { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
[BsonIgnoreIfNull(false)]
public int? ExportShipmentExBondNoOfPackage { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
[BsonRepresentation(BsonType.ObjectId)]
[BsonIgnoreIfNull(false)]
public string? ExportShipmentExBondNoOfPackageUnit { get; set; }

public string? ExportShipmentExbondStatus { get; set; } = "Y";
public DateTime ExportShipmentExBondCreatedDate { get; set; } = DateTime.UtcNow;
[BsonRepresentation(BsonType.ObjectId)]
public string? ExportShipmentExBondCreatedBy { get; set; }
[BsonRepresentation(BsonType.ObjectId)]
public string? ExportShipmentExBondUpdatedBy { get; set; }
public DateTime ExportShipmentExBondUpdatedDate { get; set; } = DateTime.UtcNow;
}
}
< /code>
Проблема: < /p>
  • Только обновления, предоставленные поля. Строка)
Вопрос:
Как я могу обновить только предоставленные поля и разрешить явное установление поля (включая строки ObjectId), используя C# Mongodb, не перепроверка других полей?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -some-fiel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»