[{"data":1,"prerenderedAt":995},["ShallowReactive",2],{"blog:2005:automaticcomparisonoperatoroverloadingincsharp":3,"blogMore-Development":981,"comments-automaticcomparisonoperatoroverloadingincsharp":994},{"id":4,"title":5,"body":6,"category":964,"commentCount":66,"date":965,"description":966,"excerpt":967,"extension":968,"filenames":969,"hidden":970,"image":969,"meta":971,"minutes":88,"navigation":84,"path":972,"seo":973,"showCategory":969,"stem":974,"tags":975,"updated":969,"url":978,"wordCount":979,"__hash__":980},"content\u002Fblog\u002F2005\u002Fautomaticcomparisonoperatoroverloadingincsharp.md","Automatic comparison operator overloading in C#",{"type":7,"value":8,"toc":962},"minimark",[9,21,24,40,42,53,695,698,940,943,952,958],[10,11,12,13,20],"p",{},"Abhinaba has blogged on the ",[14,15,19],"a",{"href":16,"rel":17},"https:\u002F\u002Fblogs.msdn.com\u002Fabhinaba\u002Farchive\u002F2005\u002F10\u002F11\u002F479537.aspx",[18],"nofollow","painful C# operator overloading"," experience.",[10,22,23],{},"The basic problem that is if you want to overload one, you soon end up many of the tests including == != \u003C \u003C= > >= Equals, Compare and probably CompareTo via IComparable when it turns out one function can provide everything needed in general use.",[25,26,27,38],"blockquote",{},[10,28,29,30],{},"GitHub has the ",[14,31,33,34],{"href":32},"https:\u002F\u002Fgithub.com\u002Fdamieng\u002FDamienGKit\u002Fblob\u002Fmaster\u002FCSharp\u002FDamienG.Library\u002FSystem\u002FAutoOperators.cs","latest version of ",[35,36,37],"code",{},"AutoOperators",[14,39],{"href":32},[14,41],{"href":32},[10,43,44,47,52],{},[14,45,46],{"href":32},"Ruby already has this with the ",[14,48,51],{"href":49,"rel":50},"https:\u002F\u002Fwww.rubycentral.com\u002Fref\u002Fref_c_array.html#_lt_eq_gt",[18],"\u003C=> operator, sometimes known as a SpaceShipOperator"," and this got me thinking resulting in the following little class:",[54,55,60],"pre",{"className":56,"code":57,"language":58,"meta":59,"style":59},"language-csharp shiki shiki-themes everforest-light dracula","using System;\n\n\u002F\u002F\u002F AutoOperators provides a base class where all the standard operators are overridden and\n\u002F\u002F\u002F wired up via the subclass's implementation of IComparable.CompareTo.\npublic abstract class AutoOperators : IComparable {\n  public static bool operator \u003C (AutoOperators obj1, AutoOperators obj2) {\n    return Compare(obj1, obj2) \u003C 0;\n  }\n  public static bool operator > (AutoOperators obj1, AutoOperators obj2) {\n    return Compare(obj1, obj2) > 0;\n  }\n  public static bool operator == (AutoOperators obj1, AutoOperators obj2) {\n    return Compare(obj1, obj2) == 0;\n  }\n  public static bool operator != (AutoOperators obj1, AutoOperators obj2) {\n    return Compare(obj1, obj2) != 0;\n  }\n  public static bool operator \u003C= (AutoOperators obj1, AutoOperators obj2) {\n    return Compare(obj1, obj2) \u003C= 0;\n  }\n  public static bool operator >= (AutoOperators obj1, AutoOperators obj2) {\n    return Compare(obj1, obj2) >= 0;\n  }\n\n  public static int Compare(AutoOperators obj1, AutoOperators obj2) {\n    if (Object.ReferenceEquals(obj1, obj2)) return 0;\n    if ((object)obj1 == null) return -1;\n    if ((object)obj2 == null) return 1;\n    return obj1.CompareTo(obj2);\n  }\n\n  public abstract int CompareTo(object obj);\n  public abstract override int GetHashCode();\n\n  public override bool Equals(object obj) {\n    if (!(obj is AutoOperators)) return false;\n    return this == (AutoOperators) obj;\n  }\n}\n","csharp","",[35,61,62,79,86,93,99,126,166,187,193,221,237,242,270,286,291,319,335,340,368,384,389,417,433,438,443,470,492,524,549,563,568,573,595,613,618,638,666,684,689],{"__ignoreMap":59},[63,64,67,71,75],"span",{"class":65,"line":66},"line",1,[63,68,70],{"class":69},"smiwp","using",[63,72,74],{"class":73},"sjYfO"," System",[63,76,78],{"class":77},"s6Vpi",";\n",[63,80,82],{"class":65,"line":81},2,[63,83,85],{"emptyLinePlaceholder":84},true,"\n",[63,87,89],{"class":65,"line":88},3,[63,90,92],{"class":91},"sSX4p","\u002F\u002F\u002F AutoOperators provides a base class where all the standard operators are overridden and\n",[63,94,96],{"class":65,"line":95},4,[63,97,98],{"class":91},"\u002F\u002F\u002F wired up via the subclass's implementation of IComparable.CompareTo.\n",[63,100,102,106,109,112,116,119,123],{"class":65,"line":101},5,[63,103,105],{"class":104},"s9HRq","public",[63,107,108],{"class":104}," abstract",[63,110,111],{"class":69}," class",[63,113,115],{"class":114},"sPLAf"," AutoOperators",[63,117,118],{"class":77}," : ",[63,120,122],{"class":121},"snuxY","IComparable",[63,124,125],{"class":77}," {\n",[63,127,129,132,135,139,142,146,149,151,155,158,160,163],{"class":65,"line":128},6,[63,130,131],{"class":104},"  public",[63,133,134],{"class":104}," static",[63,136,138],{"class":137},"sXAHl"," bool",[63,140,141],{"class":137}," operator",[63,143,145],{"class":144},"sS4Kt"," \u003C",[63,147,148],{"class":77}," (",[63,150,37],{"class":121},[63,152,154],{"class":153},"s7cAX"," obj1",[63,156,157],{"class":77},", ",[63,159,37],{"class":121},[63,161,162],{"class":153}," obj2",[63,164,165],{"class":77},") {\n",[63,167,169,172,175,178,181,185],{"class":65,"line":168},7,[63,170,171],{"class":69},"    return",[63,173,174],{"class":144}," Compare",[63,176,177],{"class":77},"(obj1, obj2) ",[63,179,180],{"class":104},"\u003C",[63,182,184],{"class":183},"s3Ipq"," 0",[63,186,78],{"class":77},[63,188,190],{"class":65,"line":189},8,[63,191,192],{"class":77},"  }\n",[63,194,196,198,200,202,204,207,209,211,213,215,217,219],{"class":65,"line":195},9,[63,197,131],{"class":104},[63,199,134],{"class":104},[63,201,138],{"class":137},[63,203,141],{"class":137},[63,205,206],{"class":144}," >",[63,208,148],{"class":77},[63,210,37],{"class":121},[63,212,154],{"class":153},[63,214,157],{"class":77},[63,216,37],{"class":121},[63,218,162],{"class":153},[63,220,165],{"class":77},[63,222,224,226,228,230,233,235],{"class":65,"line":223},10,[63,225,171],{"class":69},[63,227,174],{"class":144},[63,229,177],{"class":77},[63,231,232],{"class":104},">",[63,234,184],{"class":183},[63,236,78],{"class":77},[63,238,240],{"class":65,"line":239},11,[63,241,192],{"class":77},[63,243,245,247,249,251,253,256,258,260,262,264,266,268],{"class":65,"line":244},12,[63,246,131],{"class":104},[63,248,134],{"class":104},[63,250,138],{"class":137},[63,252,141],{"class":137},[63,254,255],{"class":144}," ==",[63,257,148],{"class":77},[63,259,37],{"class":121},[63,261,154],{"class":153},[63,263,157],{"class":77},[63,265,37],{"class":121},[63,267,162],{"class":153},[63,269,165],{"class":77},[63,271,273,275,277,279,282,284],{"class":65,"line":272},13,[63,274,171],{"class":69},[63,276,174],{"class":144},[63,278,177],{"class":77},[63,280,281],{"class":104},"==",[63,283,184],{"class":183},[63,285,78],{"class":77},[63,287,289],{"class":65,"line":288},14,[63,290,192],{"class":77},[63,292,294,296,298,300,302,305,307,309,311,313,315,317],{"class":65,"line":293},15,[63,295,131],{"class":104},[63,297,134],{"class":104},[63,299,138],{"class":137},[63,301,141],{"class":137},[63,303,304],{"class":144}," !=",[63,306,148],{"class":77},[63,308,37],{"class":121},[63,310,154],{"class":153},[63,312,157],{"class":77},[63,314,37],{"class":121},[63,316,162],{"class":153},[63,318,165],{"class":77},[63,320,322,324,326,328,331,333],{"class":65,"line":321},16,[63,323,171],{"class":69},[63,325,174],{"class":144},[63,327,177],{"class":77},[63,329,330],{"class":104},"!=",[63,332,184],{"class":183},[63,334,78],{"class":77},[63,336,338],{"class":65,"line":337},17,[63,339,192],{"class":77},[63,341,343,345,347,349,351,354,356,358,360,362,364,366],{"class":65,"line":342},18,[63,344,131],{"class":104},[63,346,134],{"class":104},[63,348,138],{"class":137},[63,350,141],{"class":137},[63,352,353],{"class":144}," \u003C=",[63,355,148],{"class":77},[63,357,37],{"class":121},[63,359,154],{"class":153},[63,361,157],{"class":77},[63,363,37],{"class":121},[63,365,162],{"class":153},[63,367,165],{"class":77},[63,369,371,373,375,377,380,382],{"class":65,"line":370},19,[63,372,171],{"class":69},[63,374,174],{"class":144},[63,376,177],{"class":77},[63,378,379],{"class":104},"\u003C=",[63,381,184],{"class":183},[63,383,78],{"class":77},[63,385,387],{"class":65,"line":386},20,[63,388,192],{"class":77},[63,390,392,394,396,398,400,403,405,407,409,411,413,415],{"class":65,"line":391},21,[63,393,131],{"class":104},[63,395,134],{"class":104},[63,397,138],{"class":137},[63,399,141],{"class":137},[63,401,402],{"class":144}," >=",[63,404,148],{"class":77},[63,406,37],{"class":121},[63,408,154],{"class":153},[63,410,157],{"class":77},[63,412,37],{"class":121},[63,414,162],{"class":153},[63,416,165],{"class":77},[63,418,420,422,424,426,429,431],{"class":65,"line":419},22,[63,421,171],{"class":69},[63,423,174],{"class":144},[63,425,177],{"class":77},[63,427,428],{"class":104},">=",[63,430,184],{"class":183},[63,432,78],{"class":77},[63,434,436],{"class":65,"line":435},23,[63,437,192],{"class":77},[63,439,441],{"class":65,"line":440},24,[63,442,85],{"emptyLinePlaceholder":84},[63,444,446,448,450,453,455,458,460,462,464,466,468],{"class":65,"line":445},25,[63,447,131],{"class":104},[63,449,134],{"class":104},[63,451,452],{"class":137}," int",[63,454,174],{"class":144},[63,456,457],{"class":77},"(",[63,459,37],{"class":121},[63,461,154],{"class":153},[63,463,157],{"class":77},[63,465,37],{"class":121},[63,467,162],{"class":153},[63,469,165],{"class":77},[63,471,473,476,479,482,485,488,490],{"class":65,"line":472},26,[63,474,475],{"class":69},"    if",[63,477,478],{"class":77}," (Object.",[63,480,481],{"class":144},"ReferenceEquals",[63,483,484],{"class":77},"(obj1, obj2)) ",[63,486,487],{"class":69},"return",[63,489,184],{"class":183},[63,491,78],{"class":77},[63,493,495,497,500,503,506,508,511,514,516,519,522],{"class":65,"line":494},27,[63,496,475],{"class":69},[63,498,499],{"class":77}," ((",[63,501,502],{"class":137},"object",[63,504,505],{"class":77},")obj1 ",[63,507,281],{"class":104},[63,509,510],{"class":183}," null",[63,512,513],{"class":77},") ",[63,515,487],{"class":69},[63,517,518],{"class":104}," -",[63,520,521],{"class":183},"1",[63,523,78],{"class":77},[63,525,527,529,531,533,536,538,540,542,544,547],{"class":65,"line":526},28,[63,528,475],{"class":69},[63,530,499],{"class":77},[63,532,502],{"class":137},[63,534,535],{"class":77},")obj2 ",[63,537,281],{"class":104},[63,539,510],{"class":183},[63,541,513],{"class":77},[63,543,487],{"class":69},[63,545,546],{"class":183}," 1",[63,548,78],{"class":77},[63,550,552,554,557,560],{"class":65,"line":551},29,[63,553,171],{"class":69},[63,555,556],{"class":77}," obj1.",[63,558,559],{"class":144},"CompareTo",[63,561,562],{"class":77},"(obj2);\n",[63,564,566],{"class":65,"line":565},30,[63,567,192],{"class":77},[63,569,571],{"class":65,"line":570},31,[63,572,85],{"emptyLinePlaceholder":84},[63,574,576,578,580,582,585,587,589,592],{"class":65,"line":575},32,[63,577,131],{"class":104},[63,579,108],{"class":104},[63,581,452],{"class":137},[63,583,584],{"class":144}," CompareTo",[63,586,457],{"class":77},[63,588,502],{"class":137},[63,590,591],{"class":153}," obj",[63,593,594],{"class":77},");\n",[63,596,598,600,602,605,607,610],{"class":65,"line":597},33,[63,599,131],{"class":104},[63,601,108],{"class":104},[63,603,604],{"class":104}," override",[63,606,452],{"class":137},[63,608,609],{"class":144}," GetHashCode",[63,611,612],{"class":77},"();\n",[63,614,616],{"class":65,"line":615},34,[63,617,85],{"emptyLinePlaceholder":84},[63,619,621,623,625,627,630,632,634,636],{"class":65,"line":620},35,[63,622,131],{"class":104},[63,624,604],{"class":104},[63,626,138],{"class":137},[63,628,629],{"class":144}," Equals",[63,631,457],{"class":77},[63,633,502],{"class":137},[63,635,591],{"class":153},[63,637,165],{"class":77},[63,639,641,643,645,648,651,654,656,659,661,664],{"class":65,"line":640},36,[63,642,475],{"class":69},[63,644,148],{"class":77},[63,646,647],{"class":104},"!",[63,649,650],{"class":77},"(obj ",[63,652,653],{"class":69},"is",[63,655,115],{"class":121},[63,657,658],{"class":77},")) ",[63,660,487],{"class":69},[63,662,663],{"class":183}," false",[63,665,78],{"class":77},[63,667,669,671,675,677,679,681],{"class":65,"line":668},37,[63,670,171],{"class":69},[63,672,674],{"class":673},"sKO3f"," this",[63,676,255],{"class":104},[63,678,148],{"class":77},[63,680,37],{"class":121},[63,682,683],{"class":77},") obj;\n",[63,685,687],{"class":65,"line":686},38,[63,688,192],{"class":77},[63,690,692],{"class":65,"line":691},39,[63,693,694],{"class":77},"}\n",[10,696,697],{},"And then to use it simply inherit from it and implement GetHashCode and CompareTo, e.g.",[54,699,701],{"className":56,"code":700,"language":58,"meta":59,"style":59},"using System;\n\npublic class SampleClass : AutoOperators {\n  private int testValue = 0;\n\n  public SampleClass(int initialTestValue) {\n    testValue = initialTestValue;\n  }\n\n  public int TestValue {\n    get { return testValue; }\n    set { testValue = value; }\n  }\n\n  public override int CompareTo(object obj) {\n    if (obj is SampleClass)\n       return TestValue.CompareTo(((SampleClass) obj).TestValue);\n    else\n       return -1;\n  }\n\n  public override int GetHashCode() {\n    return TestValue.GetHashCode();\n  }\n}\n",[35,702,703,711,715,730,747,751,767,777,781,785,794,807,820,824,828,846,860,885,890,900,904,908,921,932,936],{"__ignoreMap":59},[63,704,705,707,709],{"class":65,"line":66},[63,706,70],{"class":69},[63,708,74],{"class":73},[63,710,78],{"class":77},[63,712,713],{"class":65,"line":81},[63,714,85],{"emptyLinePlaceholder":84},[63,716,717,719,721,724,726,728],{"class":65,"line":88},[63,718,105],{"class":104},[63,720,111],{"class":69},[63,722,723],{"class":114}," SampleClass",[63,725,118],{"class":77},[63,727,37],{"class":121},[63,729,125],{"class":77},[63,731,732,735,737,740,743,745],{"class":65,"line":95},[63,733,734],{"class":104},"  private",[63,736,452],{"class":137},[63,738,739],{"class":77}," testValue ",[63,741,742],{"class":104},"=",[63,744,184],{"class":183},[63,746,78],{"class":77},[63,748,749],{"class":65,"line":101},[63,750,85],{"emptyLinePlaceholder":84},[63,752,753,755,757,759,762,765],{"class":65,"line":128},[63,754,131],{"class":104},[63,756,723],{"class":144},[63,758,457],{"class":77},[63,760,761],{"class":137},"int",[63,763,764],{"class":153}," initialTestValue",[63,766,165],{"class":77},[63,768,769,772,774],{"class":65,"line":168},[63,770,771],{"class":77},"    testValue ",[63,773,742],{"class":104},[63,775,776],{"class":77}," initialTestValue;\n",[63,778,779],{"class":65,"line":189},[63,780,192],{"class":77},[63,782,783],{"class":65,"line":195},[63,784,85],{"emptyLinePlaceholder":84},[63,786,787,789,791],{"class":65,"line":223},[63,788,131],{"class":104},[63,790,452],{"class":137},[63,792,793],{"class":77}," TestValue {\n",[63,795,796,799,802,804],{"class":65,"line":239},[63,797,798],{"class":137},"    get",[63,800,801],{"class":77}," { ",[63,803,487],{"class":69},[63,805,806],{"class":77}," testValue; }\n",[63,808,809,812,815,817],{"class":65,"line":244},[63,810,811],{"class":137},"    set",[63,813,814],{"class":77}," { testValue ",[63,816,742],{"class":104},[63,818,819],{"class":77}," value; }\n",[63,821,822],{"class":65,"line":272},[63,823,192],{"class":77},[63,825,826],{"class":65,"line":288},[63,827,85],{"emptyLinePlaceholder":84},[63,829,830,832,834,836,838,840,842,844],{"class":65,"line":293},[63,831,131],{"class":104},[63,833,604],{"class":104},[63,835,452],{"class":137},[63,837,584],{"class":144},[63,839,457],{"class":77},[63,841,502],{"class":137},[63,843,591],{"class":153},[63,845,165],{"class":77},[63,847,848,850,853,855,857],{"class":65,"line":321},[63,849,475],{"class":69},[63,851,852],{"class":77}," (obj ",[63,854,653],{"class":69},[63,856,723],{"class":121},[63,858,859],{"class":77},")\n",[63,861,862,865,868,870,873,876,879,883],{"class":65,"line":337},[63,863,864],{"class":69},"       return",[63,866,867],{"class":77}," TestValue.",[63,869,559],{"class":144},[63,871,872],{"class":77},"(((",[63,874,875],{"class":121},"SampleClass",[63,877,878],{"class":77},") obj).",[63,880,882],{"class":881},"sSKRk","TestValue",[63,884,594],{"class":77},[63,886,887],{"class":65,"line":342},[63,888,889],{"class":69},"    else\n",[63,891,892,894,896,898],{"class":65,"line":370},[63,893,864],{"class":69},[63,895,518],{"class":104},[63,897,521],{"class":183},[63,899,78],{"class":77},[63,901,902],{"class":65,"line":386},[63,903,192],{"class":77},[63,905,906],{"class":65,"line":391},[63,907,85],{"emptyLinePlaceholder":84},[63,909,910,912,914,916,918],{"class":65,"line":419},[63,911,131],{"class":104},[63,913,604],{"class":104},[63,915,452],{"class":137},[63,917,609],{"class":144},[63,919,920],{"class":77},"() {\n",[63,922,923,925,927,930],{"class":65,"line":435},[63,924,171],{"class":69},[63,926,867],{"class":77},[63,928,929],{"class":144},"GetHashCode",[63,931,612],{"class":77},[63,933,934],{"class":65,"line":440},[63,935,192],{"class":77},[63,937,938],{"class":65,"line":445},[63,939,694],{"class":77},[10,941,942],{},"As with all code, determine the suitability of this solution to your own needs, and that responsibility is yours. As with all code here it comes without warranty, expressed, implied or otherwise alluded to.",[10,944,945,946,951],{},"I’d recommend checking out the performance, ",[14,947,950],{"href":948,"rel":949},"https:\u002F\u002Fmsdn.microsoft.com\u002Flibrary\u002Fdefault.asp?url=\u002Flibrary\u002Fen-us\u002Fcpgenref\u002Fhtml\u002Fcpconoperatoroverloadingusageguidelines.asp",[18],"CLS compliance regarding operators"," and the addition of any extra operators you use all the time.",[10,953,954],{},[955,956,957],"em",{},"[)amien",[959,960,961],"style",{},"html pre.shiki code .smiwp, html code.shiki .smiwp{--shiki-default:#F85552;--shiki-dark:#FF79C6}html pre.shiki code .sjYfO, html code.shiki .sjYfO{--shiki-default:#DF69BA;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic}html pre.shiki code .s6Vpi, html code.shiki .s6Vpi{--shiki-default:#5C6A72;--shiki-dark:#F8F8F2}html pre.shiki code .sSX4p, html code.shiki .sSX4p{--shiki-default:#939F91;--shiki-default-font-style:italic;--shiki-dark:#6272A4;--shiki-dark-font-style:inherit}html pre.shiki code .s9HRq, html code.shiki .s9HRq{--shiki-default:#F57D26;--shiki-dark:#FF79C6}html pre.shiki code .sPLAf, html code.shiki .sPLAf{--shiki-default:#3A94C5;--shiki-dark:#8BE9FD}html pre.shiki code .snuxY, html code.shiki .snuxY{--shiki-default:#3A94C5;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic}html pre.shiki code .sXAHl, html code.shiki .sXAHl{--shiki-default:#3A94C5;--shiki-dark:#FF79C6}html pre.shiki code .sS4Kt, html code.shiki .sS4Kt{--shiki-default:#8DA101;--shiki-dark:#50FA7B}html pre.shiki code .s7cAX, html code.shiki .s7cAX{--shiki-default:#5C6A72;--shiki-default-font-style:inherit;--shiki-dark:#FFB86C;--shiki-dark-font-style:italic}html pre.shiki code .s3Ipq, html code.shiki .s3Ipq{--shiki-default:#DF69BA;--shiki-dark:#BD93F9}html pre.shiki code .sKO3f, html code.shiki .sKO3f{--shiki-default:#DF69BA;--shiki-default-font-style:inherit;--shiki-dark:#BD93F9;--shiki-dark-font-style:italic}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sSKRk, html code.shiki .sSKRk{--shiki-default:#35A77C;--shiki-dark:#F8F8F2}",{"title":59,"searchDepth":81,"depth":81,"links":963},[],"Development","2005-10-11T09:12:00+00:00","Abhinaba has blogged on the painful C# operator overloading experience.","[object Object]","md",null,false,{},"\u002Fblog\u002F2005\u002Fautomaticcomparisonoperatoroverloadingincsharp",{"title":5,"description":966},"blog\u002F2005\u002Fautomaticcomparisonoperatoroverloadingincsharp",[976,977],".NET","C#","\u002Fblog\u002F2005\u002Fautomaticcomparisonoperatoroverloadingincsharp\u002F",602,"T3pO3Cvtim5xI4PjtgZZCOMSzpgvUZd8ztbFZ3TAwBk",[982,986,990],{"title":983,"date":984,"url":985},"Transactions in the MongoDB EF Core Provider","2025-10-25","\u002Fblog\u002F2025\u002Fmongodb-explicit-transactions\u002F",{"title":987,"date":988,"url":989},"Queryable Encryption with the MongoDB EF Core Provider","2025-09-22","\u002Fblog\u002F2025\u002Fmongodb-queryable-encryption\u002F",{"title":991,"date":992,"url":993},"Lazy Loading with EF Core Proxies","2025-04-02","\u002Fblog\u002F2025\u002Fef-proxies\u002F",[],1780900533831]