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?
 
    