I have some code that inserts a record, and I want to first delete any existing records with matching tuples. This code is called rapidly from a number of executables:
public void AddMemberEligibility(long memberId, string internalContractKey, int planSponsorId, int vendorId, string vendorContractKey) {
using (IDocumentSession session = Global.DocumentStore.OpenSession()) {
var existingMember = session.Query<MemberEligibility>().FirstOrDefault(x => x.VendorId == vendorId
&& x.MemberId == memberId && x.PlanSponsorId == planSponsorId);
if (existingMember != null) {
session.Delete<MemberEligibility>(existingMember);
session.SaveChanges();
}
Eligibility elig = new Eligibility() {
InternalContractKey = internalContractKey,
MemberId = memberId,
PlanSponsorId = planSponsorId,
VendorId = vendorId
};
session.Store(elig);
session.SaveChanges();
}
}
This doesn't seem to be enough to protect against duplicates. Any suggestions?