entity-framework - 解决WCF数据服务问题上的DateTimeOffset的最佳方法

标签 entity-framework wcf service

我尝试为 Entity Framework 模型创建WCF数据服务,该模型包含一些DateTimeOffeset类型的属性。但是,WCF数据服务不支持DateTimeOffset类型,因为我在对异常文本进行搜索之后发现“类型'Task'上的'CreationTime'属性为'DateTimeOffset'类型,这不是受支持的原始类型。'。请参阅服务器日志。有关更多详细信息。异常堆栈跟踪为:...”。

我现在正在考虑解决此问题的不同方法,包括:

  • 将类型更改为可以映射到数据库中DateTime的类型(最坏的解决方案)
  • 将数据库中的列类型保留为DateTimeOffset,将列映射到Entity Framework模型中的两个属性,一个为DateTime,另一个为整数类型的“Offset”属性。

  • 我真的不喜欢这些方法。有没有人找到解决这个问题的好方法?

    最佳答案

    只需将DateTimeOffset类型作为KnownType添加到包含CreationTime属性的EF数据协定中,如http://msdn.microsoft.com/en-us/library/ms730167.aspx中所述。

    DateTimeOffset是实际上被作为基元处理的复杂.NET类型之一,但默认情况下,它没有被注册为序列化程序的KnownType。因此,您需要手动执行此操作。

    您的代码可能如下所示:

    [DataContract]
    [KnownType(typeof(DateTimeOffset))]
    public class Task
    {
        [DataMember]
        private DateTimeOffset CreationTime;
    ...
    

    关于entity-framework - 解决WCF数据服务问题上的DateTimeOffset的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3700777/

    相关文章:

    c# - Entity Framework 连接字符串

    entity-framework - 取消 Entity Framework 查询

    c# - 基于使用 NamedNetPipes 绑定(bind)解析端点地址动态创建 WCF ServiceHost

    c# - 卸载命令仅在 Release模式下失败

    wcf - WCF 测试客户端中的 https 使用 basicHttpBinding 绑定(bind)

    entity-framework - 为什么使用TPC继承时Select查询使用左外连接?

    c# - 为什么 EF 生成外键?

    基类上的 WCF 数据契约 knowntype

    .net - WCF:如何从配置中获取 Binding 对象

    android - 如何删除触摸时的 TYPE_SYSTEM_OVERLAY View