エンティティオブジェクトの配列(EOCを使用するPOCO)をロードして返すステートレスサービスがあります。遅延読み込みとプロキシの作成が無効になっています。私は別のレベルを含めたい場合は、物事が悪い方法では南に行く、しかしサービスファブリックステートレスサービスがPOCOオブジェクトグラフを返すときのCOMException
var devices = context.Devices.Where(d => d.ParentHost_Id == hostId);
return Task.FromResult(devices.ToArray());
:
var devices = context.Devices.Where(d => d.ParentHost_Id == hostId).Include(d => d.ConnectedDevices);
return Task.FromResult(devices.ToArray());
すべては、私が唯一の単一レベルのグラフを返すよううまく限り作品です
この場合、私のコードは要求されたオブジェクトをロードして問題なく返しますが、コールチェーンの上流のどこかでService FabricがCOMExceptionをスローし、その後私のサービスを再び呼び出すことによって処理します。この結果、新しいCOMExcetionが作成され、停止するまでこれを続けます。
{System.Runtime.InteropServices.COMException (0x80071C4C): Undantag från HRESULT: 0x80071C4C
vid Microsoft.ServiceFabric.Services.Communication.FabricTransport.Common.NativeServiceCommunication.IFabricServiceCommunicationClient.EndRequest(IFabricAsyncOperationContext context)
vid Microsoft.ServiceFabric.Services.Communication.FabricTransport.Client.NativeServiceCommunicationClient.EndRequest(IFabricAsyncOperationContext context)}
デバイスクラスは、EFによって生成され、このようになりますされています。これがいただければ幸いですなぜ起こるの
public partial class Devices
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Devices()
{
this.LogValues = new HashSet<LogValues>();
}
public long Id { get; set; }
public int DeviceId { get; set; }
public int Type { get; set; }
public string Property { get; set; }
public string Name { get; set; }
public Nullable<long> ParentHost_Id { get; set; }
public virtual Hosts Hosts { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<LogValues> LogValues { get; set; }
public virtual ConnectedDevices ConnectedDevices { get; set; }
}
任意のアイデア!