【问题标题】:aspnetzero prevent soft delete if row is referenced in another table如果行在另一个表中被引用,aspnetzero 会阻止软删除
【发布时间】:2021-10-19 15:06:00
【问题描述】:

我在我的应用程序中使用 ASPNETZero,在下面的代码片段的帮助下,实体被软删除。

var query = Repository.GetAll()
            .Where("Id == @0", input.Id)
            .ProjectTo<TDto>(ItemMapper);
        var dto = await AsyncExecuter.SingleAsync(query, true);
        await base.DeleteAsync(input);
        await CurrentUnitOfWork.SaveChangesAsync();
        await EventBus.TriggerAsync(new DestroyEvent<TDto>(dto));

它将 IsDeleted 属性设置为 False,但我想检查引用表中是否存在该值,如果存在则不要删除(软删除)实体

【问题讨论】:

    标签: c# entity-framework .net-core entity-framework-core aspnetzero


    【解决方案1】:

    如果您像这样使用代码优先创建实体:

    public class Book
    { 
        public Guid Id{ get; set; }
        public string BookName{ get; set; }
        public virtual ICollection<BookPage> BookPages{ get; set; } 
    }
    
     public class BookPage
     { 
            public Guid Id{ get; set; }
            public int PageNum{ get; set; }
            public string PageContent{ get; set; }
     }
    

    您可以编写查询来获取 BookPage 中未引用的 Book:

    var query = BookRepository
                .Include(x => x.BookPages)
                .Where(x => x.Id == input.Id && x.BookPages.Count == 0)
                .ProjectTo<BookDto>(ItemMapper);
    

    【讨论】:

    • 这是一个 AspNetZero 项目。它实现了通用实现你怎么知道哪个 Repo 包含什么?
    • 您可以在此处查看演示:docs.aspnetzero.com/en/aspnet-core-mvc/v7.2.0/…。在我的示例中,BookRepo 包含 BookPageRepo,因为 Book 实体声明了 BookPages 的 ICollection。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多