实体框架核心 2 将字符串另存为大写



我想将所有字符串以大写形式保存到我的数据库中。我认为最好的地方是覆盖我DbContext上的SaveChanges()。我知道我需要打电话给ToUpper(),但我不确定该怎么打电话。

public override int SaveChanges()
{
foreach (var entry in ChangeTracker.Entries().Where(e => e.State == EntityState.Added || e.State == EntityState.Modified))
{
//do something
}
return base.SaveChanges();
}

我不确定使用此约束污染数据库层是否明智。这将限制数据库的可重用性。

通常,数据库(表(的结构定义与数据库中数据的处理是分开的,后者是通过单独的数据库抽象层完成的。

这种分离使得可以将数据库结构重用于具有其他约束的数据库(例如,允许小写字符串的数据库或用于单元测试的特殊数据库(。

这种关注点的分离通常是使用存储库模式实现的。这种分离使得无需更改数据库结构即可更改数据库的功能。

  • MSDN 说明实体框架和存储库模式
  • 堆栈溢出:存储库模式分步说明

您还可以使用使用小写字符串的现有数据库,因为存储库层可以在返回查询字符串之前将所有内容转换为大写。

因此,通过将数据库与数据功能分离,可以更轻松地将数据库重用于其他目的,并更改需求而无需更改数据库中的数据:提高可重用性和改进维护。

最新更新