为了获得WP7中网络功能的印象,我打算构建一个简单的ping应用程序,它将向某个主机显示ICMP ping请求的结果.
但是,不仅System.Net.NetworkInformation.Ping缺少类,还缺少System.Net.Sockets名称空间.
经过简短的研究后,我发现WP7中只有两种通信方式:WebClient使用http(s)请求的类和使用SOA服务的WCF客户端.
这是否意味着我无法直接通过手机ping主机?我看到的唯一可能的解决方案是在专用服务器上实现一个单独的WCF服务,该服务将对手机执行ping操作,这看起来像是一种过度杀伤并且存在某些缺陷.
在我的NUnit/FluentAssertions测试中,我使用以下代码将从系统返回的复杂对象与引用对象进行比较:
response.ShouldBeEquivalentTo(reference, o => o.Excluding(x => x.OrderStatus)
.Excluding(x => x.Id)
.Excluding(x => x.Items[0].Name)
.Excluding(x => x.Items[0].Article)
.Excluding(x => x.ResponseStatus));
Run Code Online (Sandbox Code Playgroud)
但是,这并不是我的意图.我想排除Name,并Article为每一个在对象Items列表,不仅为第0.我该如何实现这种情况?
我查看了文档,但没有找到解决方案.我错过了什么吗?
在我通过ServiceStack的OrmLite在SQLite中创建和提交事务后,我无法继续发出任何查询.
例如,以下测试失败:
[Test, Explicit]
public void Can_query_after_transaction_is_committed()
{
var connection = new OrmLiteConnectionFactory(":memory:", false, SqliteDialect.Provider, true);
using (var db = connection.OpenDbConnection())
{
db.DropAndCreateTable<SimpleObject>();
var trans = db.OpenTransaction();
db.Insert(new SimpleObject{test="test"});
trans.Commit();
Assert.DoesNotThrow(()=> db.Select<SimpleObject>()); //throws
}
}
class SimpleObject{public string test { get; set; }}
Run Code Online (Sandbox Code Playgroud)
我得到的例外是:"事务与命令的连接无关"在OrmLite的那一行周围失败.但是,我根本不应该参与交易.
当我使用SQL Server作为提供程序时,代码就像
new OrmLiteConnectionFactory(
@"Data Source=.\SQLEXPRESS;Initial Catalog=TestEmpty;Persist Security Info=True;User ID=db;Password=db;",
false, SqlServerDialect.Provider, true);*/
Run Code Online (Sandbox Code Playgroud)
这个测试工作正常.
我不正确地结束交易吗?它是ServiceStack.OrmLite中的错误吗?
假设我有两个对象:
class Order
{
string Name {get; set;}
Customer Customer {get; set;}
Item[] Items {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
和
class OrderDTO
{
string Name {get; set;}
CustomerDTO Customer {get; set;}
ItemDTO[] Items {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
如果我收到一个orderDTO完全填充的对象,orderDTO.TranslateTo<Order>()那么结果只会Name填充,而不是Customer或Items.有没有办法进行递归转换,或者唯一的选择是手动翻译客户和每个项目?