2009-11-05 92 views
22

我有我在哪里编辑现有数据库更新paticular字段,DateTime ASP.NET MVC应用程序。我的数据库有4场,其中两个是dateCreated会DateModified。当我尝试更新的领域,我想保持dateCreated会时间是相同的,没有任何理由来更新它的创建日期,而我使用DateTime.Now一个DATETIME2数据类型为datetime数据类型的转换导致外的范围内的值

这里改变DateModified时间,当前时间是给定的代码以防万一我做错了什么。这是我第一次使用ASP.NET MVC,所以要温和。我看到其他的答案,其中Context被称为,但我找不到任何参考。当我运行应用程序时,我在标题中收到错误消息,并且contractEntity.SaveChanges()显示为红色。

public ActionResult Edit(Contract editContract) { 
var contract = (from c in contractEntity.Contracts where c.Id == editContract.Id select c).First(); 
if (!ModelState.IsValid) 
    return View(contract); 
// editContract.DateCreated = contract.DateCreated; 
// editContract.DateModified = DateTime.Now; 
    contractEntity.ApplyCurrentValues(contract.EntityKey.EntitySetName, editContract); 
    contractEntity.SaveChanges(); 
    return RedirectToAction("Index"); 
} 

请任何帮助表示赞赏。谢谢。

+0

我相信,因为这帖子撰写,由专人修改EDMX是没有答案的。在2011年发布的是Jamiegs更可能的候选人。 – OmegaMan 2015-03-05 02:36:25

回答

19

阅读this website后,我发现打开了我的数据库和变化.edmx文件:

<...Provider="System.Data.SqlClient" ProviderManifestToken="2008".../> 

<...Provider="System.Data.SqlClient" ProviderManifestToken="2005".../> 

这是可以接受的或者是有没有修复该错误一个更好的办法?

+0

什么网站?... – 2009-11-05 05:19:56

+0

http://ifunky.net/post/Type-datetime2-is-not-a-defined-system-type-Entity-Framework.aspx 对不起,如果我发布了,会有所帮助。 – 2009-11-05 05:35:08

+5

此更改会停止使用DATETIME2类型的EF。这是你的应用程序的正确解决方案吗?只有你可以这么说。如果您打算使用DATETIME2,请围绕此进行规划。 – 2009-11-05 18:37:31

38

对于我来说,我有同样的问题,但问题是,默认情况下,当我救了我的模型中,创建一个无效的日期时间。我有一个字段CreatedOn并没有将其设置为任何值,这意味着值为01/01/0001,这是SQL的无效日期时间。设置它为我摆脱了问题。

+2

我不知道为什么仍然是EF 4。3 Code-First为SQL Server 2008 R2数据库而不是datetime2创建日期时间字段。 – IsmailS 2012-05-27 11:06:47

12

您也可以编辑模型(或EF中的.edmx),并设置StoreGeneratedPattern来计算了有问题的领域。这将导致它不保存到该字段,因为它由SQL服务器计算。

+0

这种方式在这种情况下效果最好。请注意,只有在数据库中指定了缺省值时,它才有效。由于这个问题是关于DateCreated和DateModified的,所以这些可能会被设置为'DEFAULT GETDATE()' – CrazyPyro 2014-03-28 22:10:02

6

我有同样的错误,我发现如果你有一个带有DateTime Nullable字段的SQL 2008数据库,请不要在你的代码中明确地指定Null(Nothing)到这个字段,这会导致这个错误,或者你可以将所有DateTime字段更改为DateTime2。

3

只需使用一个日期时间为空的日期时间等?在您的域实体属性中,如果您的数据库中的列可以为空。这将使它工作。

相关问题