是否可以修改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对象持久化到数据库时,我还需要能够执行相反的操作)
为什么不添加辅助属性呢。例如,使用分部类可以这样做:
public partial class Categories {
public string CapitalName {
return Name.ToUpper();
}
}
然后你可以做:
Category category = categoryRepository.GetById(id);
string name = category.CaptialName;
或者您可以在Category上创建一个扩展方法。