Beispiel #1
0
        public static Task <Document> StoreDocument(this IProvider provider, Document document)
        {
            var command = new StoreDocumentCommand
            {
                Document = document,
            };

            return(provider
                   .ExecuteCommand(command)
                   .ContinueWith <Document>(command.HandleResult));
        }
Beispiel #2
0
            public System.Threading.Tasks.Task <Result> Visit(StoreDocumentCommand storeDocumentCommand)
            {
                return(Task.Factory.StartNew <Result>(() =>
                {
                    var document = storeDocumentCommand.Document;
                    if (document.Meta.Id == Guid.Empty)
                    {
                        document.Meta.Id = Guid.NewGuid();
                    }

                    inMemoryProvider._docs.Add(document);

                    return new DocumentResult(document);
                }));
            }
            public virtual Task <Result> Visit(StoreDocumentCommand storeDocumentCommand)
            {
                var collectionReference = new DocumentReferencePosition
                {
                    Path      = "$collection",
                    Reference = new DocumentReference
                    {
                        DocumentId = this.documentCollection.collectionRoot.Meta.Id,
                        Revision   = this.documentCollection.collectionRoot.Meta.RevisionEtag,
                    }
                };

                storeDocumentCommand.Document.References.Add(collectionReference);

                return(documentCollection.provider.ExecuteCommand(storeDocumentCommand));
            }
Beispiel #4
0
        public Task <Result> Visit(StoreDocumentCommand storeDocumentCommand)
        {
            var document = storeDocumentCommand.Document;

            if (document == null)
            {
                throw new ArgumentNullException("document");
            }
            if (document.Content == null)
            {
                throw new ArgumentException("Document Content cannot be null", "document");
            }

            return(Task.Factory.StartNew <Result>(() =>
            {
                var xmlElm = (XElement)document.Content.ToXNode();
                xmlElm.Add(new XAttribute(XNamespace.Xmlns.GetName("jxml"), JsonXml.JsonXmlSettings.JXmlNamespace),
                           new XAttribute(XNamespace.Xmlns.GetName("jsonx"), JsonXml.JsonXmlSettings.JsonNetXmlNamespace));

                using (var conn = new SqlConnection(_connectionString))
                    using (var cmd = new SqlCommand())
                    {
                        conn.Open();
                        cmd.Connection = conn;
                        cmd.CommandType = System.Data.CommandType.StoredProcedure;
                        cmd.CommandText = "dbo.StoreDocument";

                        if (document.Meta != null)
                        {
                            cmd.Parameters.Add(new SqlParameter("DocumentId", document.Meta.Id));
                            cmd.Parameters.Add(new SqlParameter("FriendlyId", document.Meta.Name));
                            cmd.Parameters.Add(new SqlParameter("RevisionEtag", document.Meta.RevisionEtag));
                        }

                        var xmlContent = new SqlXml(xmlElm.CreateReader());
                        cmd.Parameters.AddWithValue("Content", xmlContent);

                        using (var sqlReader = cmd.ExecuteReader())
                        {
                            return MapRecord(sqlReader);
                        }
                    }
            }));
        }