小编DEH*_*AAS的帖子

TimeSpan FromMilliseconds奇怪的实现?

我最近在.net timespan实现中遇到了一些奇怪的行为.

        TimeSpan test = TimeSpan.FromMilliseconds(0.5);
        double ms = test.TotalMilliseconds; // Returns 0
Run Code Online (Sandbox Code Playgroud)

FromMilliseconds采用double作为参数.但是,似乎内部的值是四舍五入的.

如果我使用5000个滴答(.5毫秒)实例化新的时间跨度,则TotalMilliseconds的值是正确的.

查看反射器中的TimeSpan实现会发现输入实际上已经转换为long.

为什么Microsoft设计FromMilliseconds方法采用double参数而不是long(因为在实现时,double值是无用的)?

.net c# timespan

27
推荐指数
1
解决办法
4242
查看次数

处理实体对象设计中的id

有一段时间我一直在考虑如何处理由数据库分配标识符的对象.

表示表实体的典型对象可能如下所示:

public class Test
{
    public int Id { get; private set; }
    public string Something { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

假设我们希望使用此对象来插入,检索和更新数据库中的对象.至于检索和更新,我们没有问题,因为Id字段总是有一个值.

但是,如果我们要将Test类型的新对象插入数据库,则Id字段仍需要具有值.我们可以使用"0",因为它不太可能被用作数据库密钥,但实际上这不是一个好的设计.

同样,如果我们反转情况并使Id属性可以为空,我们可以对数据库尚未分配标识符的对象使用null.但是,现在可以从数据库中检索的对象不具有标识符(如类设计所允许,但不是数据库设计)

关于如何为这个问题做好设计的任何好主意?

.net c# database entity class-design

8
推荐指数
1
解决办法
1011
查看次数

多版本实体数据库设计

我目前正在开发一个项目,我们需要在数据库中保留给定实体的多个版本.

例如,我们假设我们有一个名为House的实体,它有房间.现在,每当房间被添加,更新或从房屋中删除,或者房屋或任何房间的房产被更改时,我们都需要保留旧信息和新信息.我们希望在"更改集"中将更改组合在一起(实际上问题有点像源控件).

现在实际的模型比这复杂得多,但我认为这个例子说明了问题.

我非常想听听这个问题的一些可能的解决方案.

我们正在运行Microsoft SQL Server 2008 R2.

sql database version-control database-design

8
推荐指数
1
解决办法
2621
查看次数