【问题标题】:Bulk insert in RavenDB在 RavenDB 中批量插入
【发布时间】:2013-07-18 09:28:51
【问题描述】:

我想在 RaverDB 数据库中批量插入我从 XML 文件反序列化的一些行。

我写的代码如下

public RavenDBImport(PROJECTSRow dsrlizedObject)
{
    IDocumentStore docuStore = ConnectToDB();


    using (var session = docuStore.OpenSession())
    {
        var existingDoc = session.Load<PROJECTSRow>(dsrlizedObject.IC_NAME);
        if (existingDoc == null)
        {

            ERROR
            PROJECTSRow row = new PROJECTSRow()
                {
                    IC_NAME = dsrlizedObject.IC_NAME,
                    SERIAL_NUMBER = dsrlizedObject.SERIAL_NUMBER,
                    TOTAL_COST = dsrlizedObject.TOTAL_COST,
                    ADMINISTERING_IC = dsrlizedObject.ADMINISTERING_IC,
                    FUNDING_MECHANISM = dsrlizedObject.FUNDING_MECHANISM
                };
            session.Store(row);
        }
        else
        {
            Console.WriteLine("*******************************************");
            Console.Write("A Document with the same IC_NAME alredy exists in the database.");
            Console.WriteLine("*******************************************");
        }
        session.SaveChanges();
    }
}


#region ConnectToDB
// ConnectToDB - Create Connection with the DB - TestDB
public static IDocumentStore ConnectToDB()
    {
        var documentStore = new Raven.Client.Document.DocumentStore { Url = "http://hyperpc:8080/", DefaultDatabase = "TestDB" };
        documentStore.Initialize();
        return documentStore;
    }

它是这样称呼的......

    foreach (PROJECTSRow r in SBIRSTTRSelectedRows)
    {
        // ImportToDB Call
        new RavenDBImport(r);
    }

问题是数据库中可能已经存在 IC_NAME 的公司,该 IC_NAME 与我要导入的公司(例如 Company1 LLC. 和 Company1 LTD.)不完全相同但相似。目前它检查完全相同的 IC_NAME。 我该怎么做才能识别这些公司,然后手动决定是否要导入文件?

谢谢

顺便说一句,课程如下

namespace XML2RavenDBConverter
{
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class PROJECTS
    {

        private PROJECTSRow[] itemsField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("row", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
        public PROJECTSRow[] Items
        {
            get
            {
                return this.itemsField;
            }
            set
            {
                this.itemsField = value;
            }
        }
    }

    [Serializable]
    public class PROJECTSRow
    {
        [XmlElement("IC_NAME")]
        public string IC_NAME { get; set; }
        [XmlElement("SERIAL_NUMBER")]
        public string SERIAL_NUMBER { get; set; }
        [XmlElement("TOTAL_COST")]
        public string TOTAL_COST { get; set; }
        [XmlElement("ADMINISTERING_IC")]
        public string ADMINISTERING_IC { get; set; }
        [XmlElement("FUNDING_MECHANISM")]
        public string FUNDING_MECHANISM { get; set; }
        //
        // more to follow
        //


        [XmlElement()]
        private rowPISPI[][] PISField;
        [XmlElement("PROJECT_TERMSX")]
        private rowPROJECT_TERMSXTERM[][] PROJECT_TERMSXField;
    }



        [Serializable]

        public class rowPISPI
        {
            [XmlElement("PI_NAME")]
            public string PI_NAME {get; set; }
            [XmlElement("PI_ID")]
            public string PI_ID {get; set; }
        }

        [Serializable]
        public class rowPROJECT_TERMSXTERM
        {
            [XmlElement("TERM")]
            public string valueField { get; set; }
        }

}

【问题讨论】:

    标签: c# xml-serialization ravendb bulkinsert


    【解决方案1】:

    您可能不应该一次更新一条记录。 RavenDB 有一个批量插入功能,这将使事情变得更容易和更快。见http://ravendb.net/docs/2.0/client-api/advanced/bulk-inserts

    【讨论】:

      猜你喜欢
      • 2012-04-17
      • 2014-09-18
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多