如何定义用于在DB中保存和检索varchar字段的特定函数?

时间:2011-12-14 10:18:14

标签: c# entity-framework-4

我们有一个旧的数据库,由于兼容性问题我们无法更改。因此,大多数varchar字段都包含通过字符集读取的非unicode字符,确切地说是cp1251。

我们正在使用EF4.1在旧数据库上开发新的应用程序。将数据放在ascii cp1251中并且必须在utf-8中显示它是个问题。不幸的是,我是EF的新手。所以我到处都遇到麻烦。

我正在寻找一种方法来实现2个函数,这些函数在数据检索和从/向DB输入时将字符串从cp1251转换为utf-8。

让我这样说,有一些方法来捕获EF尝试保存varchar字段获取其当前数据并转换为cp1251格式,反之亦然,无论当前正在使用的字段,表或数据库检索,它更像是一种特定于连接的实现。

我们没有数据访问层和业务逻辑,我们只是直接从UI到EF4.1,任何需要实现的业务逻辑我们只是把它们放到DbContext类。

我只是不知道在网上寻找什么,或者从哪里开始。

欢迎任何指示。提前谢谢。

1 个答案:

答案 0 :(得分:1)

只需确保使用cp1251的所有字段都标记为非unicode并尝试使用它。恕我直言它应该工作。没有扩展点可以为某些数据类型添加自定义转换功能。

要在EDMX中创建属性非unicode,只需将其设置在属性的属性页中即可。要在代码映射中使其成为非unicode,请使用:

modelBuilder.Entity<YourEntityType>()
            .Property(p => p.YourStringProperty)
            .IsUnicode(false);