首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTime2不再支持了?

DateTime2不再支持了?
EN

Stack Overflow用户
提问于 2014-07-13 20:41:37
回答 1查看 386关注 0票数 2

最终编辑/ TLDR

事实上,这个问题与EF无关,而是 Server:我在这台特定的机器上运行了3个版本:2005 (不知道从哪里!)、20082012

由于一个未知的原因,2005版本被用作默认版本。

因此,我已经卸载并重新安装了2012年版本,强制使用正确的默认名称("SQLEXPRESS").

从那时起,我可以强制将DateTime映射到DateTime2,而不存在任何问题。

我看到了一些代码示例,它们使用:

代码语言:javascript
复制
[Column(TypeName = "DateTime2")]

将.Net DateTime映射到 Server DateTime2

但是,以最新的EF 6.1.1,这似乎是坏的。

我调试了源代码,发现DateTime2实际上不在Server支持的类型列表中!

下面是一个简单的复制:

代码语言:javascript
复制
class BrokenDateTime2
{
    public long Id { get; set; }

    [Column(TypeName = "DateTime2")]
    public DateTime DateTime2 { get; set; }
}

class Context : DbContext
{
    public DbSet<BrokenDateTime2> BrokenDateTime2 { get; set; }
}

...

using (Context context = new Context())
{
    context.Database.Initialize(true);
}

我遗漏了什么?

编辑:更多代码

它在以下方面爆炸:

代码语言:javascript
复制
public static PrimitiveType GetStoreTypeFromName(this DbProviderManifest providerManifest, string name)
{
    ...
    return providerManifest.GetStoreTypes()
                           .Single(p => string.Equals(p.Name, name, StringComparison.OrdinalIgnoreCase));
}

事实上,当我看providerManifest.GetStoreTypes()的时候,我没有看到任何与DateTime2相匹配的东西。

例外是:

代码语言:javascript
复制
InvalidOperationException: Sequence contains no matching element
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-14 18:02:30

如果您运行Server 2008及更高版本,实体框架将完全支持Datetime2,但不支持Server 2005!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24726859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档