Chronozoom.Entities.Storage.DeleteTriplet C# (CSharp) Метод

DeleteTriplet() публичный Метод

Delete triple with specified parameters.
public DeleteTriplet ( TripleName subjectName, TripleName predicateName, TripleName objectName ) : bool
subjectName TripleName Subject
predicateName TripleName Predicate
objectName TripleName Object
Результат bool
        public bool DeleteTriplet(TripleName subjectName, TripleName predicateName, TripleName objectName)
        {
            subjectName = EnsurePrefix(subjectName);
            predicateName = EnsurePrefix(predicateName);
            objectName = EnsurePrefix(objectName);

            var shortSubjectStr = subjectName.ToString();
            var shortPredicateStr = predicateName.ToString();
            var shortObjectStr = objectName.ToString();

            var tr = Triples.Where(t => t.Subject == shortSubjectStr && t.Predicate == shortPredicateStr).Include(o => o.Objects).FirstOrDefault();
            if (tr != null)
            {
                var obj = tr.Objects.FirstOrDefault(o => o.Object == shortObjectStr);
                if (obj != null)
                {
                    TripleObjects.Remove(TripleObjects.Find(obj.TripleObject_Id));

                    if (!tr.Objects.Any())
                        Triples.Remove(tr);

                    SaveChanges();
                    return true;
                }
            }
            return false;
        }

Usage Example

Пример #1
0
 public void DeleteTriplet(SingleTriple triple)
 {
     #if RELEASE // Authenticate only in RELEASE mode
     ApiOperation(delegate(User user, Storage storage)
     {
         if (user == null)
         {
             SetStatusCode(HttpStatusCode.Unauthorized, "Anonymous users cannot delete triple");
         }
         else
         {
             if(GetSubjectOwner(storage, triple.Subject) == user.Id.ToString())
             {
     #else
             using(var storage = new Storage())
     #endif
                 try
                 {
                     SetStatusCode(storage.DeleteTriplet(triple.Subject, triple.Predicate, triple.Object) ? HttpStatusCode.OK : HttpStatusCode.NotModified, "");
                 }
                 catch (ArgumentException exc)
                 {
                     SetStatusCode(HttpStatusCode.BadRequest, exc.Message);
                 }
     #if RELEASE
             }
             else
             {
                 SetStatusCode(HttpStatusCode.Unauthorized, "Only subject owners can delete triple");
             }
         }
     });
     #endif
 }