Свойства тени BulkExtensions - PullRequest
0 голосов
/ 04 апреля 2019

Следуя подходу DDD, я настроил модель Aggregate Entity для сигналов и образцов. Образец сущности находится здесь:

/// <summary>
/// Basic Sample entity
/// </summary>
public class Sample : BaseEntity
{
    private Sample()
    {
        // Required for EFCore
    }

    /// <summary>
    /// Initializes a new instance of Sample
    /// </summary>
    /// <param name="timeStamp">Time stamp</param>
    /// <param name="value">double or null</param>
    public Sample(DateTime timeStamp, double? value) : this()
    {
        this.TimeStamp = timeStamp;
        this.Value = value;
    }

    /// <summary>
    /// Gets or sets SignalId - shadow property for EfCore
    /// </summary>
    private int SignalId { get; set; }

    /// <summary>
    /// Gets or sets TimeStamp
    /// </summary>
    public DateTime TimeStamp { get; private set; }

    /// <summary>
    /// Gets or sets Value
    /// </summary>
    public double? Value { get; set; }
}

SignalId - это свойство shadow, настроенное таким образом, чтобы сэмплы могли быть частью коллекции в совокупности сигналов.

Поскольку я использую EFCore и учитывая, что могут быть тысячи выборок, связанных с сигналом, я использую EFCore.BulkExtensions для управления действиями CRUD для выборок и избегая встроенного средства отслеживания сущностей.

Проблема, с которой я столкнулся, заключается в том, что BulkExtensions, и я думаю, что SQLBulkCopy, на котором он основан, не может распознать частное свойство shadow для сущности Sample.

Переключение с private на public устраняет проблему, но нарушает принцип сокрытия деталей реализации, которые кажутся грязными.

Есть ли способ обойти эту проблему, или мне просто нужно жить с грязным кодом, учитывая, что он в совокупности Signal не так уж и плох.

...