0

プロジェクト .NET で EF 4 (モデル ファースト) を使用していますが、DateTimeフィールドに問題があります。

この例外を使用するとSaveChanges()、次の例外がスローされます。

System.Data.SqlClient.SqlException : datetime2 データ型を datetime データ型に変換すると、範囲外の値になりました。

私は使用しようとしました:

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

4

1 に答える 1

2

ExpiraEmあなたのコラム に問題はないと思います。

私が疑うのは、null 不可の別の (または複数の) 日時フィールドがあり、それらに値を提供していないため、EF は01/01/0001それらを渡しますが、これは SQL サーバー (SQL サーバーの最小許容日付は 1753 年 1 月 1 日です)。したがって、この SQL 例外が発生します。

同様の状況がここここで発生しています。

于 2012-08-10T00:10:19.863 に答える