2015-08-15 65 views
2

我試圖從另一個數據庫插入數據,並且此代碼一直工作到今天。現在它不再了。如何解決將datetime2數據類型轉換爲datetime數據類型導致超出範圍的值

下面是代碼:

var itemMember = Db.Members.FirstOrDefault(p => p.Id == CurrentMember.Id); 
    var itemSelectedName = Db.Topics.FirstOrDefault(p => p.Id == TopicId); 
    var itemMap = Db.Reeves.FirstOrDefault(p=> p.Member.Id == CurrentMember.Id); 
    var itemReeve = Db.Reeves.FirstOrDefault(p => p.Member.Id == CurrentMember.Id); 
    var item = new Problem 
     { 
      Name = input.Name, 
      Text = input.Info, 
      Topic = itemSelectedName, 
      WhoIs = itemMember, 
      Province = itemMap.Province, 
      District = itemMap.District, 
      Town = itemMap.Town, 
      Reeve=itemReeve, 
      Created=DateTime.Now, 
      Solved = false, 
      Read=false 
     }; 


    Db.Problems.Add(item); 
    Db.SaveChanges(); 

沒有什麼空的代碼,它拋出一個錯誤:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.

我該怎麼辦?

而且這個錯誤現在顯示出來:

System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while saving entities that do not expose foreign key properties for their relationships. The EntityEntries property will return null because a single entity cannot be identified as the source of the exception. Handling of exceptions while saving can be made easier by exposing foreign key properties in your entity types.

但正如我說,這是工作到今天:/

這裏是視圖模型:

[Display(Name = "Başlık"), Required, StringLength(50)] 
public string Name { get; set; } 

[Display(Name = "Bilgi")] 
[UIHint("TinyMCE")] 
public string Info { get; set; } 

[Required(ErrorMessage = "Gerekli Alan")] 
[Display(Name = "Konu")] 
[UIHint("DropDownList")] 
[AdditionalMetadata("DataController", "Problem")] 
[AdditionalMetadata("DataAction", "ProblemDrop")] 
public int? TopicId { get; set; } 

這裏是模型

public class Problem 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Text { get; set; } 
    public short Sira { get; set; } 
    public DateTime Created { get; set; } 
    public virtual Topic Topic { get; set; } 
    public virtual Member WhoIs { get; set; } 
    public virtual Province Province { get; set; } 
    public virtual Town Town { get; set; } 
    public virtual District District { get; set; } 
    public virtual Reeve Reeve { get; set; } 
    public Boolean Solved { get; set; } 
    public DateTime SolvedDate { get; set; } 
    public virtual Member WhoSolved { get; set; } 
    public Boolean Read { get; set; } 
} 

已解決:日期爲空可能是問題嗎?

+0

你模型中是否包含任何其他'DateTime'屬性? –

+0

發佈您的模型班將有所幫助。 – jjczopek

+0

我已更新模型和視圖模型@StephenMuecke – furkan

回答

1

您沒有爲SolvedDate設置一個值,所以默認值01\01\01將被髮送到數據庫,這會導致錯誤。

如果你想有SolvedDatenull值,你應該把它定義爲Nullable日期(DateTime?),因爲DateTime是一個struct,不能設置爲null

0

當您嘗試將無效日期插入數據庫中的datetime字段時,會顯示該錯誤。檢查該字段中Problem模型:

public DateTime SolvedDate { get; set; } 

這一點應null或初始化爲一些價值。

0

創建一個新的viewmodel後,我收到了同樣的錯誤。我在viewmodel中將DateTime字段更改爲可空(DateTime?),並解決了我的問題。

+0

歡迎使用StackOverflow!除了提供解釋什麼對你有用,還包括一些代碼來幫助未來的用戶解決他們的問題。 – buczek

相關問題