मेरे पास एक एपीआई कॉल getUser है जो निर्दिष्ट कॉलम पर डेटाबेस से सभी जानकारी देता है, लेकिन मैं कुछ चीजों को बाहर करना चाहता हूं; फोन नंबर, ईमेल आदि

LINQ के साथ काम करने की कोशिश की, मॉडलबिल्डर को बदलना, विकल्पबिल्डर को बदलना

"सेलेक्ट * से" कहते हुए किसी भी SQL की तलाश की है, लेकिन कुछ नहीं मिला

मेरे UserModel में चीजों को हटाना काम करता है, हालांकि यह करने का यह एक बदसूरत तरीका है।

Result<UserModel> result = new Result<UserModel>();
try
    {
        using (var db = new ComeatDBContext(optionsBuilder.Options))
        {
            var user = db.User
                .Include(f => f.Nationality)
                .Include(f => f.State)
                .FirstOrDefault(e => e.Id == id && !e.IsDeleted);

            result.ResponseObject = (new UserModel()).FromUser(user);
            var house = db.House.FirstOrDefault(e => e.UserId == user.Id);
            if (house != null)
            {
                result.ResponseObject.House = ( new HouseModel() ).FromHouse(house);
            }
            result.Success = true;
        }

अपेक्षित है कि कौन सा डेटा शामिल करना है (या शामिल नहीं है) लेकिन इसके बजाय मुझे सब कुछ मिलता है जब तक कि मैं डीबी द्वारा डिलीवर किए जाने के बाद मानों को "शून्य" पर सेट नहीं करता।

0
Mikkel Rohde Glerup 30 अगस्त 2019, 14:21

1 उत्तर

सबसे बढ़िया उत्तर

.FirstOrDefault(...) अंतर्निहित डेटाबेस क्वेरी (SQL) को निष्पादित करने का कारण बनता है। यह उन सभी गुणों को पॉप्युलेट करेगा जो निकाय पर परिभाषित हैं। जब आप (new UserModel()).FromUser(user); निष्पादित करते हैं तो डेटा इकाई आपके UserModel ऑब्जेक्ट में बदल जाती है।

यदि आप अपने UserModel वर्ग का पुन: उपयोग करना चाहते हैं लेकिन सभी स्तंभों को पॉप्युलेट नहीं करना चाहते हैं तो आप ऐसा कुछ कर सकते हैं;

var userModel = db.User
     .Select(x => new UserModel { Name = x.Name, Id = x.Id })
     .FirstOrDefault(e => e.Id == id && !e.IsDeleted);

result.ResponseObject = userModel;
1
DaggeJ 30 अगस्त 2019, 12:18