我们有一个旧的数据库,由于兼容性问题我们无法更改。因此,大多数varchar字段都包含通过字符集读取的非unicode字符,确切地说是cp1251。
我们正在使用EF4.1在旧数据库上开发新的应用程序。将数据放在ascii cp1251中并且必须在utf-8中显示它是个问题。不幸的是,我是EF的新手。所以我到处都遇到麻烦。
我正在寻找一种方法来实现2个函数,这些函数在数据检索和从/向DB输入时将字符串从cp1251转换为utf-8。
让我这样说,有一些方法来捕获EF尝试保存varchar字段获取其当前数据并转换为cp1251格式,反之亦然,无论当前正在使用的字段,表或数据库检索,它更像是一种特定于连接的实现。
我们没有数据访问层和业务逻辑,我们只是直接从UI到EF4.1,任何需要实现的业务逻辑我们只是把它们放到DbContext类。
我只是不知道在网上寻找什么,或者从哪里开始。
欢迎任何指示。提前谢谢。
答案 0 :(得分:1)
只需确保使用cp1251的所有字段都标记为非unicode并尝试使用它。恕我直言它应该工作。没有扩展点可以为某些数据类型添加自定义转换功能。
要在EDMX中创建属性非unicode,只需将其设置在属性的属性页中即可。要在代码映射中使其成为非unicode,请使用:
modelBuilder.Entity<YourEntityType>()
.Property(p => p.YourStringProperty)
.IsUnicode(false);