背景
字段 TimestampCreation 在 DB 中是这样创建的:
[TimestampCreation] [datetime2](7) NOT NULL
如果我将字段添加到这样的数据表中:
table.Columns.Add(new DataColumn("TimestampCreation", typeof(DateTime)));
该值会丢失精度,因为它的存储方式如下:
2016-12-07 11:38:39.4990000
什么时候应该
2016-12-07 11:38:39.4998426
我尝试过的一种解决方案
如果我像这样添加列:
table.Columns.Add(new DataColumn("TimestampCreation", typeof(string))); // Actually datetime2
该值已正确存储到 DB,但这感觉很脏/hacky。
代码中的用法
该值设置如下:
public static void AddToTable(this EntityDto source, DataTable table)
{
var row = table.NewRow();
...
...
row["TimestampLastModification"] = source.TimestampLastModification;
table.Rows.Add(row);
}
哪里source.TimestampLastModification
是类型DateTime
:
public DateTime TimestampLastModification { get; set; }
接下来将数据表保存到存储中,如下所示:
Root.PluginManager().PersistentStorage(ParametersHelper.OverallSchema).Insert(ref table)
问题
datetime2
将字段添加到数据列并保持预期精度的正确方法是什么?