DateTime2让我发疯

时间:2012-08-09 20:43:38

标签: entity-framework datetime2

我在我的项目.NET中使用EF 4(模型优先),我在DateTime字段中遇到了麻烦。

当我使用SaveChanges()时会抛出此异常:

  

System.Data.SqlClient.SqlException:将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。

我试图使用:

System.Globalization.CultureInfo enGB = new System.Globalization.CultureInfo("en-GB");

但没有新的事情发生。如果我今晚不修理它,我会爆炸我的电脑。

我需要帮助,我不想爆炸我的电脑=(1周尝试解决它没有成功

这是我的代码:

protected void btnSave_Click(object sender, EventArgs e)
{
        int id = Convert.ToInt32(Request.QueryString["id"]);
        ModeloContainer ctx = new ModeloContainer();
        Cliente cli = ctx.Cliente.Where( cl => cl.IdCliente == id).First();
        Contrato c = new Contrato();

        c.Descricao = this.txtDescricao.Text;
        c.FaturarPara = this.ddlFaturarPara.SelectedValue;
        c.Tolerancia =  Convert.ToInt32(this.txtSuspenderContratoEm.Text);
        c.PeriodoPagto = this.ddlPeriodoPagamento.SelectedValue;

       // DateTime dtExpiracao = this.txtExpiraEm.Text.Trim() == "" ?                                                                       Convert.ToDateTime("01/01/0001") : Convert.ToDateTime(this.txtExpiraEm.Text.Trim());
        DateTime dt = DateTime.Now;
        System.Globalization.CultureInfo enGB = new System.Globalization.CultureInfo("en-GB");
        dt = Convert.ToDateTime(dt, enGB);

        c.ExpiraEm = dt; //Here is the problem! but I no have idea how fix it

        ctx.AddToContrato(c);
        ctx.SaveChanges();
        this.SalvarServiços(c.IdContrato);
}

我知道,这里有很多这样的问题,但没有一个能解决我的问题。

我想在TextBox中插入这样的日期:09/08/2012

1 个答案:

答案 0 :(得分:2)

我认为您的ExpiraEm列没有任何问题。

我怀疑你有另一个(或超过1个)不可为空的日期时间字段,并且由于你没有为它们提供任何值,EF会为它们传递01/01/0001,这是SQL Server不能接受(SQL Server的最小可接受日期是1753年1月1日)。所以你得到这个SQL异常。

遇到类似情况herehere