如何使用Entity Framework管理GetDate()

entity-framework sql-server-2008

我在我的一个数据库表中有一个这样的列

DateCreated, datetime, default(GetDate()), not null

我试图使用实体框架在这个表上插入这样的...

        PlaygroundEntities context = new PlaygroundEntities();

        Person p = new Person
        {
            Status = PersonStatus.Alive,
            BirthDate = new DateTime(1982,3,18),
            Name = "Joe Smith"
        };

        context.AddToPeople(p);
        context.SaveChanges();

当我运行此代码时,我收到以下错误

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.\r\nThe statement has been terminated.

所以我尝试将StoreGeneratedPattern设置为计算...同样的事情,然后身份......同样的事情。有任何想法吗?

一般承认的答案

将DateCreated的类型更改为datetime2可能会解决问题。

datetime 2007-05-08 12:35:29.123

datetime2 2007-05-08 12:35:29 12345

参考: http//technet.microsoft.com/en-us/library/bb677335.aspx67


热门答案

您必须手动编辑edmx xml并将SSDL StoreGeneratedPattern属性设置为identity或computed。但是,每当您通过设计器更新edmx时,您的更改都将被覆盖。

这是一个已知的问题。有关详细信息,请参阅以下链接:

Microsoft Connect Ticket

在实体框架4中使用GUID作为EntityKey



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因