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

时间:2017-08-17 14:27:05

标签: entity-framework entity-framework-core .net-core-2.0

我想以大写字母将所有字符串保存到我的数据库中。我认为这样做的最佳位置是覆盖SaveChanges()上的DbContext。我知道我需要打电话给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();
}

1 个答案:

答案 0 :(得分:0)

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

通常,数据库(表的)结构的定义与数据库中数据的处理是分开的,这是通过单独的Database Abstraction Layer完成的。

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

通常使用存储库模式实现关注点的分离。这种分离使得可以在不必更改数据库结构的情况下更改数据库的功能。

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

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