2015-08-15 44 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

相关问题