У меня возникла проблема с собственными типами в моих объектах, поскольку я добавил переопределение для 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
EntityFramework OwnedType с обратимым удалением ⇐ C#
Место общения программистов C#
-
Anonymous
1771347792
Anonymous
У меня возникла проблема с собственными типами в моих объектах, поскольку я добавил переопределение для SaveChanges, чтобы сделать возможным обратимое удаление. По сути, я переопределяю состояние сущности для изменения вместо удаления в SaveChanges и добавляю к сущности некоторую метаинформацию. Это работает хорошо, если я не добавляю OwnedType в сущность.
Когда я это делаю, EF пытается установить для всех значений из OwnedType значение NULL, что невозможно в моем примере, поскольку строки не допускают значения NULL.
Я не совсем уверен, как можно исправить такое поведение, поскольку мне нужно установить для DeleteBehaviour значение NoAction, но на данный момент я не нашел способа сделать это. Может ли кто-нибудь объяснить мне, как решить эту проблему?
[b]MainEntity.cs[/b]
public class MainEntity: SoftDeleteEntityBase
{
public int Id { get; set; }
public LocalizedStringSet MultilangTitle { get; set; } = new LocalizedStringSet();
}
[b]LocalizedStringSet.cs[/b]
public class LocalizedStringSet
{
[MaxLength(4000)]
public string En { get; set; } = string.Empty;
[MaxLength(4000)]
public string Fr { get; set; } = string.Empty;
}
[b]MainEntityConfiguration.cs[/b]
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);
}
}
[b]ApplicationDbContext.cs[/b]
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();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/73472571/entityframework-ownedtype-with-soft-delete[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия