Я создал таблицу с ограничением по умолчанию, определенным с помощью кода, подобного этому для Azure SQL:
builder.Property(c => c.CreatedDate)
.IsRequired()
.HasDefaultValueSql("sysdatetimeoffset()");
Когда я использую BulkInsertOrUpdateAsync()
для ВСТАВКИ записи, я вижу, что значение установлено как 0001-01-01 00:00:00.0000000 +00:00 вместо значения ограничения по умолчанию во время ВСТАВКИ. Как я могу включить значение из ограничения по умолчанию для INSERT и предотвратить перезапись для UPDATE?
EFCore.BulkExtensions 7.0.1.0
Вы можете это сделать с помощью свойства Exclude в BulkConfig: это конфиг
var bulkConfig = new BulkConfig()
{ PropertiesToExclude = new List<string> { nameof(Class.Column) } };
Пример конфигурации
var bulkConfig = new BulkConfig()
{
PropertiesToExclude = new List<string> { nameof(Blog.created) }
};
Вы можете создать кодовую базу со следующими операторами:
create Class
--
public partial class Blog
{
[Key]
public int id { get; set; }
public DateTime created { get; set; }
public string title { get; set; }
}
}
Change OnModelCreating
--
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>().Property(e => e.created).HasDefaultValueSql("(sysdatetimeoffset())").ValueGeneratedOnAddOrUpdate();
}
Insert Data into Blog with BulkInsertAsync
--
var bulkConfig = new BulkConfig()
{
PropertiesToExclude = new List<string> { nameof(Blog.created) }
};
var subEntities = new List<Blog>();
var maths1 = new Blog() { title = "Maths1" };
subEntities.Add(maths1);
maths1 = new Blog() { title = "Maths2" };
subEntities.Add(maths1);
await context.BulkInsertOrUpdateAsync(subEntities, bulkConfig);
Это не родная функция EF. Поэтому, пожалуйста, укажите и добавьте тег, где вы его получили.