Tôi có đoạn mã sau:Gọi là không có tham số rỗng
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);
}
Khi tôi gọi nó với giá trị cho brandCode và programCode, tôi nhận được giá trị kỳ vọng trở về từ cơ sở dữ liệu. Khi tôi thực hiện cuộc gọi nhưng thiết lập một cách rõ ràng x.ProgramCode và x.BrandCode null tôi nhận giá trị mặc định sẽ trở về từ cơ sở dữ liệu:
ContactEventValue value = ent.ContactEventValues.Single(
x => x.ContactEventTypeID == contactEventType.ContactEventTypeID
&& x.ProgramCode == null && x.BrandCode == null);
Tuy nhiên, khi tôi gọi phương thức với null cho programCode và brandCode, tôi lấy lại null từ cơ sở dữ liệu!
tôi đã cố gắng thay đổi == để Equals() cho mỗi câu trả lời cho vấn đề này: Nullable optional parameter
Vì vậy x.BrandCode.Equals (brandCode) x.BrandCode thay thế == brandCode, và x.ProgramCode.Equals (programCode) thay thế x.ProgramCode == programCode, nhưng điều đó vẫn không hoạt động.
Tôi cũng đã thử sử dụng ?? nhà điều hành, vẫn không hoạt động.
Sự cố này cho biết giải pháp không được tìm thấy và anh/chị phải sử dụng quy trình được lưu trữ: EF 4 Query - Issue with Multiple Parameters Tôi thực sự không muốn phải đến đó.
Bất kỳ ý tưởng nào?
Chúng tôi đang sử dụng EF 5.0.0. Tôi đã cố gắng thiết lập UseDatabaseNullSemantics trên Configuration, nhưng UseDatabaseNullSemantics không tồn tại. Googled nó và UseDatabaseNullSemantics dường như không tồn tại trong C#. – jgerman
Tôi đã cập nhật câu trả lời của mình. – devdigital
Chúng tôi đang sử dụng .Net 4.5. Điều đó đã hiệu quả! Cảm ơn nhiều! – jgerman