gpt4 book ai didi

sql-server - 使用 dbml 将数据库值映射到 TimeSpan

转载 作者:行者123 更新时间:2023-12-05 09:25:34 26 4
gpt4 key购买 nike

我需要在数据库列中存储时间偏移量(例如,12:25 AM,只是时间,没有日期)。

我想使用 Visual Studio 2008 中出色的数据可视化建模功能来生成 dbml 和与之配套的代码。数据库为Sql Server 2005。

由于 TimeSpan 本质上是一个包含滴答数的 Int64(又名 long),所以我尝试将那个 long 存储在数据库中。

但是,如果我指定该列应映射到 TimeSpan 类型的属性,则 Visual Studio 报告:

Warning : The custom tool 'MSLinqToSQLGenerator' failed. Unspecified error

为了解决这个问题,我将数据库值映射到一个内部属性,并添加了一个分部类,它实现了将整数值从数据库转换为 TimeSpan 并返回的属性访问器。

有没有办法为这个属性生成正确的代码?或者是否有更好的方法将时间跨度存储在 SqlServer 2005 数据库中,以便使用 dbml 更轻松地进行访问?

最佳答案

前段时间也遇到过这个问题。

据我所知,SQL Server 2005 没有直接的解决方案,所以我使用了一个技巧:

BigInt NOT NULL 类型的数据库中有Duration 列(实际上应该存储 .NET TimeStamp 数据类型)。这是 dbml 定义:

<Column Name="Duration" 
Member="DurationInternal"
AccessModifier="Protected"
Type="System.Int64"
DbType="BigInt NOT NULL"
CanBeNull="false" />

我将此类属性设置为 protected 这意味着我不希望我的类的用户直接访问此属性并为此属性制作了一个 public 部分包装器类:

    #region Properties
/// <summary>
/// Gets or sets the audio duration.
/// </summary>
/// <value>The duration.</value>
public TimeSpan Duration
{
get
{
return TimeSpan.FromTicks(this.DurationInternal);
}
set
{
this.DurationInternal = value.Ticks;
}
}
#endregion

所以我类的用户有一个易于使用的属性,而不是大量的 longTimeSpan 的转换。

希望这对您有所帮助。

关于sql-server - 使用 dbml 将数据库值映射到 TimeSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com