Bir dış kitaplık bir LINQ sağlayıcısı içeriyorsa ve bir dinamik ifade ağacı yürütürken bir istisna atarsa, bu ifade atıldığında nasıl kırılabilirim?Derlenmiş bir ifade ağacında nasıl bir hata ayıklama yapabilirim?
Örneğin, bana IQueryable
ait Max<TSource, TResult>()
yöntemini çağırmak için izin veren bir üçüncü taraf LINQ2CRM sağlayıcı, kullanmak, ancak bir InvalidCastException
atar, ben, istisnası atılır yerinde kırmaya başarısız olmasına zorlaştırıyordu yığın izlemeyi gözden geçirin çünkü hata ayıklayıcısını kodumda kırdığında zaten çözülmüştür. Bahsedilen istisna için "mola atma" ayarlıyorum. Benim ayıklama ayarları şunlardır: Tam olarak ben kırmak isterdim nerede
açıklama. I , LINQ İfadesinin yanında kırılmak istemiyor, ancak bunun yerine, İfade ağacı çalıştırıldığında kırılmak istiyorum veya başka bir deyişle, IQueryable
uzantı yöntemi Max()
LINQ sağlayıcısı tarafından sağlanan geçersiz kılmayı çağırdığında. stacktrace üst içimde kırmak ister (veya adım adım, ya da her neyse) nerede olduğu şöyle görünür:
at XrmLinq.QueryProviderBase.Execute[T](Expression expression)
at System.Linq.Queryable.Max[TSource,TResult](IQueryable`1 source, Expression`1 selector)
bu yöntemlerden birinde bir lambda ifade kesiminde bir kesme noktası sopa demek? –
[Bu yardımcı olur] (http://www.simple-talk.com/dotnet/.net-framework/linq-secrets-revealed-chaining-and-debugging/) emin değilim, ancak şimdi bir arama yapıyorum Bu ilginç olduğu gibi. Bütün yollar LinqPad'e gidiyor gibi görünüyor. Kaynak kodu olmadan nasıl kırılabildiğini göremiyorum, ve sonra kaynağa sahip olduğunuzda, sadece 'Max' sorumlu sağlayıcının bir parçası değil mi? –
[İfade Ağaçları] (http://msdn.microsoft.com/en-us/library/bb397951.aspx) MSDN bölümünde ayrıca [Debugging İfade Ağaçları] için bir bölümü vardır (http://msdn.microsoft.com/ en-us/kütüphane/ee725345). Bence burayı aramaktan vazgeçip işime geri dönmeliyim ;-) –