在我的应用程序中,我有一个方法,每次在服务器上的某个队列上发生更新时都会调用该方法.应用程序初始化为以这种方式运行.
现在,每次使用最新数据调用该方法时,我都希望将其视为事件流的一部分,从而使其成为永远不会以订阅者结束的Observable的一部分.
我面临的挑战是:如何在被调用的方法上创建一个observable?以下是我的示例代码.
//This method is invoked every time an update happens on the server
public virtual void MessageHandler(MyObject1 object1, MyObject2 object2)
{
Observable.Create<MyObject3>(observer =>
{
var object3 = new MyObject3(object1, object2);
observer.OnNext(object3 );
return Disposable.Empty;
})
.Subscribe(x => WriteLine($"Message acknowledged"));
}
Run Code Online (Sandbox Code Playgroud)
但是这会在每次调用方法时创建一个可观察对象而不是我想要的东西,而且它看起来都不是正确的方法.我还读到使用"主题"或"AsyncSubject"不是解决问题的正确方法.
对于下面的模型
public class Parent
{
public int Id { get; set; }
public List<Child> Children { get; set; }
}
public class Child
{
public int ChildId { get; set; }
public int ParentId { get; set; }
public List<Child> GrandChildren { get; set; }
}
public class GrandChild
{
public int GrandChildId { get; set; }
public int ChildId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何编写一个在Include / ThenInclude语句中获取所有Children和GrandChildren的查询?
var record = GetAll()
.Where(r => r.Id == 4)
.Include(r => r.Children) …Run Code Online (Sandbox Code Playgroud)