是否可以修改IDbSet<;T>;将数据传输到POCO实体

本文关键字:数据传输 POCO 实体 gt IDbSet 修改 lt 是否 | 更新日期: 2023-09-27 18:23:47

假设我有这个DBSet

public DbSet<Category> Categories { get; set; }

它在我的存储库中是这样使用的:

public virtual T GetById(long id)
{
    T t = dbset.Find(id);
    return t.Deleted ? null : t;
}

我们还假设Category中有一个Name属性,而Category是一个POCO对象。

是否有方法修改数据库和POCO对象之间的Name内容?为了举一个例子,假设我想将Category POCO对象中Name的所有字母大写。所以,我可以在数据库中有Categories.Name='Books'(在这种情况下,Categories是一个表),然后有category。在发出类似的命令后,Name="BOOKS"(其中类别是POCO对象)

Category Category=categoryRepository.GetById(id);

有什么办法做到这一点吗?DBSet中是否有一种钩子,可以在其中插入函数调用来将要传输的数据转换为POCO对象?

(当然,当将POCO对象持久化到数据库时,我还需要能够执行相反的操作)

是否可以修改IDbSet<;T>;将数据传输到POCO实体

为什么不添加辅助属性呢。例如,使用分部类可以这样做:

public partial class Categories {
    public string CapitalName {
        return Name.ToUpper();
    }
}

然后你可以做:

Category category = categoryRepository.GetById(id);
string name = category.CaptialName;

或者您可以在Category上创建一个扩展方法。