我有一个像这样生成的日期时间:
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搞砸了吗?
我将截断毫秒(我真的不需要它们).但我想知道为什么会这样.
我知道有办法做到这一点,但我再也找不到了.
那么,是否有人知道如何允许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)
谢谢你的帮助
我有以下方法:
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在整个迭代期间保持锁定状态?
更新:最新的许可信息可以在这里找到:http://particular.net/licensing
所以,我正在阅读NServiceBus Community Edition的许可限制.它说:
生产使用仅限于不超过4个核心的单个服务器.
这是否意味着所有订阅者和所有发布者都需要在单个服务器上运行?
或者这是否意味着作为发布者或订阅者的每个服务器可以拥有不超过4个核心?
我希望它是后者,因为我们计划使用NServiceBus允许在几个不同的客户端机器和服务器上运行的多个应用程序(和服务)订阅业务事件.我很难让我的管理层为我们想要允许作为已发布事件的订阅者的每台机器上的每个cpu支付500美元.
更新:作为旁注,商业许可证表明他们"将有权进入您的场所并访问您的记录和计算机系统",以确保您支付全额费用.我知道我的数据安全人员会对此嗤之以鼻.有商业版本的人是否评论了这次审计的发生频率以及实际的侵入程度?
我想为Windows Phone 8开发2D游戏.白天我是一名专业的应用程序开发人员,这似乎是一个有趣的爱好.
但是我试图开始失望.似乎2D游戏(远在大多数游戏中)没有可用的API.
Windows Phone制造商似乎没有支持Direct2D.所以除非你打算制作一个完全3D的应用程序,否则你运气不好.
所以,如果你只是想制作一个漂亮的2D应用程序,这些是你的选择:
3号似乎对我的游戏来说是最好的.但是,当微软已经明确表示它不会得到支持时,我讨厌浪费时间学习XNA api.
2号可以工作,但3D开发真的很难.我宁愿不必做所有这些来获得2D效果.(假设Direct2D更容易.我还没有考虑过.)
1号似乎是最简单的,但我担心如果它基于xaml渲染而不是DirectX,我的应用程序将无法正常运行.
微软的建议方法是什么?
谁决定2D游戏会被贬低?
我有两个整数,我想划分得到一个百分比.
这就是我现在所拥有的:
int mappedItems = someList.Count(x => x.Value != null);
int totalItems = someList.Count();
(int)(((double)mappedItems /(double) totalItems) * 100)
Run Code Online (Sandbox Code Playgroud)
这给出了正确的答案.但这需要做很多事情来做一些简单的事情,比如两个数字之间的百分比.
有一个更好的方法吗?什么东西不涉及铸造?
我正在创建一些动态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) 给出以下代码:
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.SomeValue和Super.Inner.SomeValue).并且(据我所知)你不能使用一个引用来表示另一个变量.
我发现Resharper有时候是错的.但通常不会.所以我想知道这里的想法.
有任何想法吗?
我有一个相当大的数据模型,我想使用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.(并且似乎管理层至少可以远离制定疯狂的错误决策.)
我有一个单元测试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# ×7
.net ×5
resharper ×2
unit-testing ×2
c#-3.0 ×1
c++ ×1
casting ×1
directx ×1
locking ×1
nservicebus ×1
odata ×1
odata-v4 ×1
sql-server ×1
yield ×1