次のコードがあります。
public static ContactEventValue GetContactEventValue(ContactEventType contactEventType, string programCode, string brandCode)
{
AdvocacyEntities ent = AdvocacyEntities.GetReadOnlyInstance();
ContactEventValue value = ent.ContactEventValues.SingleOrDefault(
x => x.ContactEventTypeID == contactEventType.ContactEventTypeID
&& x.ProgramCode == programCode && x.BrandCode == brandCode);
}
brandCode と programCode の値を指定して呼び出すと、データベースから期待値が返されます。呼び出しを行い、明示的に x.ProgramCode と x.BrandCode を null に設定すると、データベースから予想される既定値が返されます。
ContactEventValue value = ent.ContactEventValues.Single(
x => x.ContactEventTypeID == contactEventType.ContactEventTypeID
&& x.ProgramCode == null && x.BrandCode == null);
しかし、programCode と brandCode に null を指定してメソッドを呼び出すと、データベースから null が返されます。
この問題への回答ごとに == を .Equals() に変更してみました: Nullable optional parameter
したがって、x.BrandCode.Equals(brandCode) は x.BrandCode == brandCode を置き換え、x.ProgramCode.Equals(programCode) は x.ProgramCode == programCode を置き換えましたが、それでも機能しませんでした。
私も使ってみました?? オペレーター、まだ機能しませんでした。
この問題は、解決策が見つからなかったことを示しており、ストアド プロシージャを使用する必要 がありました。
何か案は?