2013-01-21 47 views
2

我正在使用實體框架4.3。在我的SQL Server 2008數據庫中,我有一些日期存儲爲日期而不是日期時間。實體框架日期時間vs SQL Server日期

我需要使用日期字段,在這裏測試的代碼示例檢索數據:

public static Applicant Create() 
    { 
     var dt = new DateTime(1967, 08, 03); 

     var r = new CrudRepo<Applicant>(UowHelper.GetUow().Context); 

     return r.Find(a => a.DateOfBirth == dt).Single(); 
    } 

不過,我發現了一個問題,與「失蹤」序列。

有關如何解決此問題的任何想法?

我還需要在某個時候更新數據庫。

謝謝。

+0

在哪一行發生錯誤?你是否加入了crudrepo代碼? –

+0

添加了錯誤堆棧 – dotnetnoob

+0

檢查http://stackoverflow.com/questions/1324199/sequence-contains-no-elements – spajce

回答

3

var dt = new DateTime(1967, 08, 03);的實際結果是8/3/1967 12:00:00 AM

DateOfBirthDataTypeDate所以我們需要TruncateTime的時間。

MSDN:EntityFunctions.TruncateTime Method

public static Applicant Create() 
    { 
     var dt = new DateTime(1967, 08, 03); 

     var r = new CrudRepo<Applicant>(UowHelper.GetUow().Context); 

     return r.FirstOrDefault(a => a.DateOfBirth == EntityFunctions.TruncateTime(dt)); 
    } 

或刪除.Single() method改用.FirstOrDefault() Method

+0

作出了更改,但仍然得到同樣的問題 - 我已經發布上​​述錯誤。 Find是返回Iqueryable的自定義方法,因此需要single()。 – dotnetnoob

+0

嘗試將'.Find()'替換爲'.FirstOrDefault()'我更新了我的答案 – spajce

+0

dt = a.DateOfBirth - 我剛剛測試過,所以我必須做一些dopey! – dotnetnoob

0

僅供參考,以添加到spajce的回答,

System.Data.Entity.Core.Objects.EntityFunctions 

已被棄用,以

System.Data.Entity.DbFunctions