我正在使用Entity Framework将一行数据插入到我的Application表中。
这是班级:
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字段中插入当前日期?
答案 0 :(得分:0)
就是这样:
_Uow.Applications.Add(new Application
{
Name = name,
ModifiedDate = DateTime.Now
});
或者您可以在构造函数中执行此操作:
public class Application
{
public Application()
{
ModifiedDate = DateTime.Now;
}
}
顺便说一句:你得到了异常,因为默认情况下,c#DateTime
比SQL的datetime
更精确。如消息所示:在SQL中使用datetime2
。 DateTime
将最小值作为初始值,对于SQL datetime
来说太低了。
答案 1 :(得分:0)
您可以指定新的构造函数
public Application(string Name)
{
if(ModifiedDate == null)
//ModifiedDate = Convert.ToDateTime(01.01.2000);
ModifiedDate = DateTime.Now;
}
OR
public Application(string Name, System.Nullable<DateTime> modifiedDate)
{
if(modifiedDate != null)
//ModifiedDate = Convert.ToDateTime(01.01.2000);
ModifiedDate = DateTime.Now;
else
Do stuff
}
这不是美好的,但应该做到这一点。
答案 2 :(得分:0)
你的ModifiedDate
初始化为minvalue,因此会产生异常。最好使用
public System.DateTime? ModifiedDate { get; set; } to make it nullable or
在构造中初始化
public Application()
{
this.TestAccounts = new List<TestAccount>();
ModifiedDate = DateTime.Now;
}