2

バックグラウンド

フィールド 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

私が試した1つの解決策

次のように列を追加すると:

table.Columns.Add(new DataColumn("TimestampCreation", typeof(string))); // Actually datetime2

値はDBに正しく保存されますが、これは汚い/ハッキーに感じます.

コードでの使用

値は次のように設定されます。

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フィールドをデータ列に追加し、期待される精度を維持する適切な方法は何ですか?

4

1 に答える 1