EntityFramework OwnedType с обратимым удалениемC#

Место общения программистов C#
Ответить
Anonymous
 EntityFramework OwnedType с обратимым удалением

Сообщение Anonymous »

У меня возникла проблема с собственными типами в моих объектах, поскольку я добавил переопределение для SaveChanges, чтобы сделать возможным обратимое удаление. По сути, я переопределяю состояние сущности для изменения вместо удаления в SaveChanges и добавляю к сущности некоторую метаинформацию. Это работает хорошо, если я не добавляю OwnedType в сущность.
Когда я это делаю, EF пытается установить для всех значений из OwnedType значение NULL, что невозможно в моем примере, поскольку строки не допускают значения NULL.
Я не совсем уверен, как можно исправить такое поведение, поскольку мне нужно установить для DeleteBehaviour значение NoAction, но на данный момент я не нашел способа сделать это. Может ли кто-нибудь объяснить мне, как решить эту проблему?
MainEntity.cs
public class MainEntity: SoftDeleteEntityBase
{
public int Id { get; set; }
public LocalizedStringSet MultilangTitle { get; set; } = new LocalizedStringSet();
}

LocalizedStringSet.cs
public class LocalizedStringSet
{
[MaxLength(4000)]
public string En { get; set; } = string.Empty;

[MaxLength(4000)]
public string Fr { get; set; } = string.Empty;
}

MainEntityConfiguration.cs
public class MainEntityConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
if (builder is null)
{
throw new ArgumentNullException(nameof(builder));
}

builder.HasKey(x => x.Id);
builder.Property(x => x.Id).ValueGeneratedOnAdd();
builder.OwnsOne(o => o.MultilangTitle);
}
}

ApplicationDbContext.cs
public override int SaveChanges()
{
if (entry.Entity is ISoftDeleteEntityBase managedCreationSoftDelete)
{
switch (entry.State)
{
case EntityState.Deleted:
{
entry.State = EntityState.Modified;
managedCreationSoftDelete.DeletedBy = creator;
managedCreationSoftDelete.Deleted = DateTime.Now;
break;
}

}
}
return base.SaveChanges();
}


Подробнее здесь: https://stackoverflow.com/questions/734 ... oft-delete
Ответить

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

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

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

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

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