小编Vac*_*ano的帖子

存储在SQL Server中时,我的DateTime中的毫秒数会发生变化

我有一个像这样生成的日期时间:

DateTime myDateTime = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

然后,我将其存储在DateTime具有Entity Framework 的数据库(在类型列中)中.然后我用OData(WCF数据服务)检索它.

当它进入TimeOfDay值时:09:30:03.0196095

当它出现时,TimeOfDay值为:09:30:03.0200000

这样做的净效果使得Milliseconds在保存前被视为19,在重新加载后被视为20.

因此,当我稍后在我的代码中进行比较时,它会在应该相等的地方失败.

SQL Server的精度不如.NET吗?或者实体框架或OData搞砸了吗?

我将截断毫秒(我真的不需要它们).但我想知道为什么会这样.

.net c# sql-server

32
推荐指数
3
解决办法
2万
查看次数

如何让Resharper在方法名称中允许下划线但仅在测试中?

我知道有办法做到这一点,但我再也找不到了.

那么,是否有人知道如何允许Resharper在单元测试中允许下划线?

所以,例如我希望这个没问题


在MyClassTest.cs中

public void MyMethodName_StateUnderTest_ExpectedResult()
{}
Run Code Online (Sandbox Code Playgroud)

但是我想要这个标志:


在MyClass.cs中

public void MyPoorly_Named_Method()
{}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

resharper unit-testing

31
推荐指数
1
解决办法
3407
查看次数

C#Yield是否可以免费锁定?

我有以下方法:

public static IEnumerable<Dictionary<string, object>> GetRowsIter
   (this SqlCeResultSet resultSet)
{
    // Make sure we don't multi thread the database.
    lock (Database)
    {
        if (resultSet.HasRows)
        {
            resultSet.Read();

            do
            {
                var resultList = new Dictionary<string, object>();
                for (int i = 0; i < resultSet.FieldCount; i++)
                {
                    var value = resultSet.GetValue(i);
                    resultList.Add(resultSet.GetName(i), value == DBNull.Value 
                                                                  ? null : value);
                }
                yield return resultList;
            } while (resultSet.Read());
        }
        yield break;
    }
Run Code Online (Sandbox Code Playgroud)

我刚刚添加了lock(Database)试图摆脱一些经济问题.我很好奇,是否会yield return释放锁定Database,然后在下一次迭代时重新锁定?或者Database在整个迭代期间保持锁定状态?

c# locking yield

31
推荐指数
3
解决办法
3337
查看次数

NServiceBus许可证?

更新:最新的许可信息可以在这里找到:http://particular.net/licensing

所以,我正在阅读NServiceBus Community Edition的许可限制.它说:

生产使用仅限于不超过4个核心的单个服务器.

这是否意味着所有订阅者和所有发布者都需要在单个服务器上运行?

或者这是否意味着作为发布者或订阅者的每个服务器可以拥有不超过4个核心?

我希望它是后者,因为我们计划使用NServiceBus允许在几个不同的客户端机器和服务器上运行的多个应用程序(和服务)订阅业务事件.我很难让我的管理层为我们想要允许作为已发布事件的订阅者的每台机器上的每个cpu支付500美元.

更新:作为旁注,商业许可证表明他们"将有权进入您的场所并访问您的记录和计算机系统",以确保您支付全额费用.我知道我的数据安全人员会对此嗤之以鼻.有商业版本的人是否评论了这次审计的发生频率以及实际的侵入程度?

.net nservicebus

31
推荐指数
1
解决办法
2万
查看次数

为Windows Phone 8开发2D游戏

我想为Windows Phone 8开发2D游戏.白天我是一名专业的应用程序开发人员,这似乎是一个有趣的爱好.

但是我试图开始失望.似乎2D游戏(远在大多数游戏中)没有可用的API.

Windows Phone制造商似乎没有支持Direct2D.所以除非你打算制作一个完全3D的应用程序,否则你运气不好.

所以,如果你只是想制作一个漂亮的2D应用程序,这些是你的选择:

  1. 使用Xaml和C#编写游戏(性能问题?)
  2. 使用Direct3D编写游戏,但只能在一个平面上绘制.
  3. 使用codeplex上的DirectX Took Kit.它允许您使用垂死的XNA框架的API进行开发.

3号似乎对我的游戏来说是最好的.但是,当微软已经明确表示它不会得到支持时,我讨厌浪费时间学习XNA api.

2号可以工作,但3D开发真的很难.我宁愿不必做所有这些来获得2D效果.(假设Direct2D更容易.我还没有考虑过.)

1号似乎是最简单的,但我担心如果它基于xaml渲染而不是DirectX,我的应用程序将无法正常运行.

微软的建议方法是什么?

谁决定2D游戏会被贬低?

c# c++ directx visual-studio-2012 windows-phone-8

30
推荐指数
3
解决办法
2万
查看次数

在C#中从两个整数创建百分比值的最佳方法是什么?

我有两个整数,我想划分得到一个百分比.

这就是我现在所拥有的:

int mappedItems = someList.Count(x => x.Value != null);
int totalItems = someList.Count();
(int)(((double)mappedItems /(double) totalItems) * 100)
Run Code Online (Sandbox Code Playgroud)

这给出了正确的答案.但这需要做很多事情来做一些简单的事情,比如两个数字之间的百分比.

有一个更好的方法吗?什么东西不涉及铸造?

.net c# casting

29
推荐指数
4
解决办法
5万
查看次数

如果一个操作数是可空类型,则Expression.GreaterThan失败,另一个操作数是非可空的

我正在创建一些动态linq并遇到以下异常问题:

没有为类型'System.Nullable`1 [System.DateTime]'和'System.DateTime'定义二元运算符GreaterThanOrEqual

我明白了,因为我的字段类型是可以为空的,而且我实际上是在DateTime.Now中传递的.

所以在试图解决这个问题时我已经尝试过了

System.Nullable<DateTime> now;
now = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

但结果类型是一个不可为空的对象,因此仍然给我上述异常.

有什么建议?!

更新:为了进一步说明,now变量在设置时变为非可空类型,而不是保持为可空的DateTime,因此匹配会引发异常

更新:可以在CodePlex项目中看到实际代码:

http://webquarters.codeplex.com/SourceControl/changeset/view/36529#574700

违规线约为145

fExp = Expression.GreaterThanOrEqual(fExpLeft, fExpRight);
Run Code Online (Sandbox Code Playgroud)

.net c# c#-3.0

28
推荐指数
1
解决办法
2万
查看次数

为什么Resharper认为具有属性"SomeValue"的内部类隐藏了外部类中具有相同名称的属性?

给出以下代码:

public static class Super
{
    public static class Inner
    {
        public static string SomeValue { get; set; }
    }

    public static string SomeValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Resharper告诉我Super.Inner.SomeValue隐藏了外部类的属性.

怎么藏起来?你有两个不同的引用(Super.SomeValueSuper.Inner.SomeValue).并且(据我所知)你不能使用一个引用来表示另一个变量.

我发现Resharper有时候是错的.但通常不会.所以我想知道这里的想法.

有任何想法吗?

c# resharper

28
推荐指数
1
解决办法
6032
查看次数

如何使用Web API OData v4来使用DateTime

我有一个相当大的数据模型,我想使用OData V4协议使用Web API OData公开.

基础数据存储在SQL Server 2012数据库中.该数据库中包含许多DateTime列.

当我接线时,我收到一个错误,即不支持System.DateTime.

所以这是我的问题,我该怎么做才能在OData Feed中看到我的DateTime列?

注意:我无法返回并将所有列更改为DateTimeOffset列.

我尝试更改Entity Framework edmx中列的类型,但它给了我这个错误:

指定的成员映射无效."MyProject.MyEntity"类型中成员'MyPropertyHere'的类型'Edm.DateTimeOffset [Nullable = False,DefaultValue =,Precision =]'与'SqlServer.datetime不兼容[Nullable = False,DefaultValue =,Precision = 3] '成员'MyColumnName''类型'MyDataModel.Store.MyEntity'.

(基本上认为DateTime与DateTimeOffset不兼容.)

Web API OData团队真的只是遗漏了需要使用SQL Server类型的所有人DateTime吗?

更新:我找到了相关的解决方法,但他们需要更新EF模型才能使用它们.如果我能避免,我宁愿不必单独更新几百个属性.

更新:这个问题让我意识到微软管理其OData产品的方式存在很大的缺陷.有很多问题,但这个问题最为明显.Web API OData中存在巨大的缺失功能. 插件的交易排序是其中两个.这两个项目(在OData规范中并且在Microsoft杀死它之前在WCF数据服务中)对于任何真实系统都是至关重要的.

但是,他们决定花时间去删除对许多开发人员非常有用的功能,而不是将时间放在那些缺少OData规范功能的关键位置.它体现了糟糕的管理,以便在添加急需的功能时优先删除工作功能.

我尝试与Web API OData代表讨论这些问题,最后,我打开了一个问题/票证,几天后关闭了.那是他们愿意做的结束.

正如我所说,Web API OData的管理还有很多问题(与DateTime无关,所以我不会在这里列出). 我一直是OData的坚定支持者,但Web API OData管理层的明显问题迫使我和我的团队/公司放弃了它.

幸运的是,可以设置普通的Web API以使用OData语法.设置控制器的工作量更大,但最终工作得很好.它支持DateTime.(并且似乎管理层至少可以远离制定疯狂的错误决策.)

.net odata asp.net-web-api asp.net-web-api-odata odata-v4

27
推荐指数
2
解决办法
3万
查看次数

单元测试 - 让单元测试调用其他单元测试是不好的形式

我有一个单元测试TestMakeAValidCall().它测试我的手机应用程序拨打有效电话.

我即将编写另一个TestShowCallMessage()需要为测试进行有效调用的测试.只是打电话给TestMakeAValidCall()那个测试是不好的形式?

作为参考,这是我的TestMakeAValidCall()测试.

    [TestMethod]
    public void TestMakeAValidCall()
    {
       //Arrange
        phone.InCall = false;
        phone.CurrentNumber = "";
        // Stub the call to the database
        data.Expect(x => x.GetWhiteListData()).
            Return(FillTestObjects.GetSingleEntryWhiteList());
        // Get some bogus data
        string phoneNumber = FillTestObjects.GetSingleEntryWhiteList().
            First().PhoneNumber;
        // Stub th call to MakeCall() so that it looks as if a call was made.
        phone.Expect(x => x.MakeCall(phoneNumber)).
            WhenCalled(invocation =>
                       {
                           phone.CurrentNumber = phoneNumber;
                           phone.InCall = true;
                       });

       //Act
        // Select the phone number
        deviceControlForm.SelectedNumber …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing visual-studio

25
推荐指数
4
解决办法
1万
查看次数