我想将所有字符串以大写形式保存到我的数据库中。我认为最好的地方是覆盖我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 说明实体框架和存储库模式
- 堆栈溢出:存储库模式分步说明
您还可以使用使用小写字符串的现有数据库,因为存储库层可以在返回查询字符串之前将所有内容转换为大写。
因此,通过将数据库与数据功能分离,可以更轻松地将数据库重用于其他目的,并更改需求而无需更改数据库中的数据:提高可重用性和改进维护。