0

我有一个看起来像这样的测试用例:

[TestMethod]
public void Things_can_be_saved()
{
  var ts = DateTime.Now;
  var thing = new Thing()
  {
      Name = "Some name",
      TimeStamp = ts
  };

  // save it
  var context = new MyDataContext(testDb);
  context.Things.Add(thing);
  context.SaveChanges();

  // pull from a fresh context so we know it's a db pull not cached
  var context2 = new MyDataContext(testDb);
  var fetched = context2.Things.FirstOrDefault(t => t.TimeStamp == ts);

  Assert.AreEqual(thing.Name, fetched.Name); 
}

因此,当我运行它时,我可以查看数据库并查看数据库中存在的“事物”。我可以看到它存储的 Timestamp 列在运行时等于 ts 变量中的值。但是 'fetched' 为 null,表示 EF 在 FirstOrDefault 查询中找不到它。关于 DateTime 平等,我有什么遗漏吗?

4

1 回答 1

2

您可能需要将数据库中的列更改为 datetime2 而不是 datetime

另请参阅此线程:SQL Server 中的 DateTime2 与 DateTime

于 2012-12-03T05:32:25.433 回答