0

我正在使用实体框架将一行数据插入到我的应用程序表中。

这是课程:

public partial class Application
{
    public Application()
    {
        this.TestAccounts = new List<TestAccount>();
    }

    public int ApplicationId { get; set; }
    public string Name { get; set; }
    public byte[] RowVersion { get; set; }
    public System.DateTime ModifiedDate { get; set; }
    public virtual ICollection<TestAccount> TestAccounts { get; set; }
}

这是 C# 代码:

_Uow.Applications.Add(new Application { Name = name });

它给了我一个错误说

  InnerException: System.Data.UpdateException
        HResult=-2146233087
        Message=An error occurred while updating the entries. See the inner exception for details.
        Source=System.Data.Entity

        InnerException: System.Data.SqlClient.SqlException
             HResult=-2146232060
             Message=The conversion of a datetime2 data type to a datetime data type
             resulted in an out-of-range value.

如何更改我的 C# 代码以在 ModifiedDate 字段中插入当前日期?

4

3 回答 3

0

您好,您ModifiedDate使用 minvalue 进行了初始化,因此它给出了异常。更好地使用

public System.DateTime? ModifiedDate { get; set; } to make it nullable or

在构造中初始化

public Application()
    {
        this.TestAccounts = new List<TestAccount>();
        ModifiedDate = DateTime.Now;

    }
于 2013-03-25T10:46:38.577 回答
0

就是这样:

_Uow.Applications.Add(new Application
                       {
                           Name = name,
                           ModifiedDate = DateTime.Now
                       });

或者您可以在构造函数中执行此操作:

public class Application
{
    public Application()
    {
        ModifiedDate = DateTime.Now;
    }
}

顺便说一句:您得到了例外,因为默认情况下 c#DateTimedatetimeSQL 更精确。就像消息说的:datetime2在 SQL 中使用。DateTime将其最小值作为初始值,这对于 SQL 来说太低了datetime

于 2013-03-25T10:36:44.873 回答
0

您可以指定一个新的构造函数

public Application(string Name)
{
  if(ModifiedDate == null)
   //ModifiedDate = Convert.ToDateTime(01.01.2000);
     ModifiedDate = DateTime.Now;
}

或者

public Application(string Name, System.Nullable<DateTime> modifiedDate)
{
   if(modifiedDate != null)
     //ModifiedDate = Convert.ToDateTime(01.01.2000);
     ModifiedDate = DateTime.Now;
   else
   Do stuff
}

这并不完美,但应该可以解决问题。

于 2013-03-25T10:44:51.660 回答