Linq2Sql 中的 System.DateTime 和 Sql datetime2 (使用 sqlmetal)

发布于 2024-10-20 00:22:17 字数 447 浏览 1 评论 0原文

我想利用新的 Sql datetime2 数据类型进行事件记录(因为标准日期时间的精度低于 System.DateTime 导致存储时数据丢失),但是当我生成使用 sqlmetal.exe 进行代码我收到以下警告:

db.dbml(98):警告 DBML1008: DbType 'DateTime2(7) 之间的映射 NOT NULL' 并输入 'System.DateTime' 在“Event”类型的“CreatedOn”列中 从以下位置加载时可能会导致数据丢失 数据库。

如果我将列定义更改为 datetime2(2) 但 2 位精度低于 System.DateTime 可以处理的,警告就会消失,对吧?为什么?我怎样才能抑制警告?

I'd like to utilize new Sql datetime2 data type for event logging (as standard datetime has lower precision than System.DateTime causing data loss on storing) but when i generate the code with sqlmetal.exe i get the following warning:

db.dbml(98) : Warning DBML1008:
Mapping between DbType 'DateTime2(7)
NOT NULL' and Type 'System.DateTime'
in Column 'CreatedOn' of Type 'Event'
may cause data loss when loading from
the database.

The warning disappears if i change my column definition to datetime2(2) but 2 digits precision is lower than System.DateTime can handle, right? Why? How can i suppress the warning?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

樱娆 2024-10-27 00:22:17

您可能会忽略该警告。我检查了 sqlmetal 的来源(使用 Reflector)并发现了这一点:

case SqlDbType.DateTime2:
if (scale <= 2)
  return Compatibility.Compatible;
else
  return Compatibility.DataLossFromDatabase;

但是,从示例数据库中查询 datetime2 字段返回了整个 7 位精度。

You might just ignore that warning. I've checked the source of sqlmetal (using Reflector) and found this:

case SqlDbType.DateTime2:
if (scale <= 2)
  return Compatibility.Compatible;
else
  return Compatibility.DataLossFromDatabase;

However, querying a datetime2 field from a sample database returned the whole 7 digit precision.

空城旧梦 2024-10-27 00:22:17

SQLMetal 只是生成 dbml 文件的工具,因此它对运行时行为没有影响。但作为生成工具,它可能不知道新的数据类型。

您是否尝试过使用 XML 编辑器自己编辑 DBML 以查看是否会丢失精度?

SQLMetal is just a tool to generate your dbml file so it has no effect on runtime behaviour. But as a generation tool it may not be aware of the new datatype.

Have you tried editing the DBML yourself using an XML editor to see if you lose precision?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文