Entity framework WCF数据服务在展开时从DateTime中删除毫秒

Entity framework WCF数据服务在展开时从DateTime中删除毫秒,entity-framework,odata,wcf-data-services,Entity Framework,Odata,Wcf Data Services,当使用WCF数据服务5.6时,我有一些奇怪的行为。 在我的例子中,我有一个表,其中有一列设置为Concurrency=Fixed,该列包含数据库中的日期时间字段,每次编辑行时都会更新。 在我刚检索实体的情况下,此列具有正确的毫秒值。但如果我进行映射,毫秒将被删除 以下是一个问题: ==================================================================== void Main() { var b = from p in TABL

当使用WCF数据服务5.6时,我有一些奇怪的行为。 在我的例子中,我有一个表,其中有一列设置为Concurrency=Fixed,该列包含数据库中的日期时间字段,每次编辑行时都会更新。 在我刚检索实体的情况下,此列具有正确的毫秒值。但如果我进行映射,毫秒将被删除

以下是一个问题:

====================================================================

void Main()
{
    var b = from p in TABLE1 where p.ID == 100 select p;
    b.Dump();
}
在这种情况下,请求是: 服务返回的数据为:

<d:COL1 m:type="Edm.DateTime">2015-02-16T12:13:52.972</d:COL1>
本例中的请求是:?$select=ID,COL1

  <d:COL1 m:type="Edm.DateTime">2015-02-16T12:13:52</d:COL1>
2015-02-16T12:13:52
====================================================================

void Main()
{
    var b = from p in TABLE1 where p.ID == 100 select p;
    b.Dump();
}
时间以毫秒为单位返回


有人有同样的问题吗?这可能是WCF数据服务或模型中的一个错误?

好的,似乎我找到了一个答案,或者至少找到了避免问题的方法。 首先,我跟踪了从框架生成的SQL,我发现在第一种情况下,我得到了SQL

 SELECT ID, COL1 FROM TABLE1
在第二种情况下,我得到了

 SELECT ID, CAST( COL1 AS DATETIME) FROM TABLE1
这导致了问题

然后我尝试将EF更新到版本6,将WCF数据服务更新到版本5.6.3, Oracle ODP到最新版本,尝试使用Oracle托管驱动程序。。。没有任何成功

然后我对表定义做了一些修改,我看到数据库中带有类型TIMESTAMP的col1和模型中的DateTime被定义为NOTNULL。 若我从数据库定义中删除它,我就得到了正确的毫秒值

因此,这可能是Oracle驱动程序中的一个错误,但可能是WCF数据服务中的一个错误。至少我在这个解决方案中找到了一种使用并发的方法