BulkExtensions阴影属性

时间:2019-04-04 12:49:10

标签: entity-framework domain-driven-design sqlbulkcopy

按照DDD方法,我为信号和样本建立了一个聚合实体模型。示例实体在这里:

/// <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属性,以便样本可以成为Signal Aggregate上集合的一部分。

由于我正在使用EFCore,并且鉴于可能有成千上万个与信号相关的样本,所以我一直在使用EFCore.BulkExtensions管理样本的CRUD操作,并避免使用内置的实体跟踪器。

我遇到的问题是BulkExtensions,我认为它基于的SQLBulkCopy无法识别Sample实体上的私有影子属性。

将其从private翻转到public可以解决此问题,但确实违反了隐藏实现细节的原则。

有没有解决这个问题的方法,还是我需要忍受肮脏的代码,因为它在Signal聚合中并不算太坏。

0 个答案:

没有答案