Sunucudaki belgelerdeki verilere erişme

Microsoft Office Word veya Microsoft Office Excel'in nesne modelini kullanmak zorunda kalmadan, belge düzeyinde özelleştirmedeki verilere karşı programlama yapabilirsiniz. Başka bir deyişle, Word veya Excel yüklü olmayan bir sunucudaki bir belgenin içerdiği verilere erişebilirsiniz. Örneğin, bir sunucudaki kod (örneğin, bir ASP.NET sayfasında) bir belgedeki verileri özelleştirebilir ve özelleştirilmiş belgeyi son kullanıcıya gönderebilir. Son kullanıcı belgeyi açtığında, çözüm derlemesindeki veri bağlama kodu özelleştirilmiş verileri belgeye bağlar. Belgedeki veriler kullanıcı arabiriminden ayrıldığından bu mümkündür. Daha fazla bilgi için bkz . Belge düzeyinde özelleştirmelerde önbelleğe alınan veriler.

Şunlar için geçerlidir: Bu konudaki bilgiler Excel ve Word için belge düzeyi projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Verileri sunucuda kullanmak üzere önbelleğe alma

Belgedeki bir veri nesnesini önbelleğe almak için, tasarım zamanında özniteliğiyle CachedAttribute işaretleyin veya çalışma zamanında konak öğesinin yöntemini kullanın StartCaching . Bir belgedeki veri nesnesini önbelleğe aldığınızda, Office çalışma zamanı Visual Studio Araçları nesneyi belgede depolanan bir XML dizesi halinde serileştirir. Nesnelerin önbelleğe almaya uygun olması için belirli gereksinimleri karşılaması gerekir. Daha fazla bilgi için bkz . Verileri önbelleğe alma.

Sunucu tarafı kodu, veri önbelleğindeki tüm veri nesnelerini işleyebilir. Önbelleğe alınmış veri örneklerine bağlı denetimler kullanıcı arabirimiyle eşitlenir, böylece verilerde yapılan tüm sunucu tarafı değişiklikleri, belge istemcide açıldığında otomatik olarak görünür.

Önbellekteki verilere erişme

Önbellekteki verilere Office dışındaki uygulamalardan ,örneğin bir konsol uygulamasından, Bir Windows Forms uygulamasından veya Bir Web sayfasından erişebilirsiniz. Önbelleğe alınan verilere erişen uygulamanın tam güvene sahip olması gerekir; Kısmi güvene sahip bir Web uygulaması, Office belgesinde önbelleğe alınmış verileri ekleyemez, alamaz veya değiştiremez.

Veri önbelleğine sınıfın özelliği tarafından CachedData sunulan koleksiyon hiyerarşisi ServerDocument aracılığıyla erişilebilir:

  • CachedData özelliği, belge düzeyinde özelleştirmede CachedDataönbelleğe alınan tüm verileri içeren bir döndürür.

  • Her CachedData biri bir veya daha fazla CachedDataHostItem nesne içerir. A CachedDataHostItem , tek bir sınıf içinde tanımlanan önbelleğe alınmış tüm veri nesnelerini içerir.

  • Her CachedDataHostItem biri bir veya daha fazla CachedDataItem nesne içerir. A CachedDataItem , tek bir önbelleğe alınmış veri nesnesini temsil eder.

    Aşağıdaki kod örneği, Excel çalışma kitabı projesinin sınıfında önbelleğe alınmış bir dizeye Sheet1 nasıl eriş yapılacağını gösterir. Bu örnek, yöntemi için Save sağlanan daha büyük bir örneğin parçasıdır.

    serverDocument1 = new ServerDocument(documentPath);
    CachedDataHostItem hostItem1 = 
        serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
    CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];
    

Önbellekteki verileri değiştirme

Önbelleğe alınmış bir veri nesnesini değiştirmek için genellikle aşağıdaki adımları gerçekleştirirsiniz:

  1. Önbelleğe alınan nesnenin XML gösterimini, nesnenin yeni bir örneğinde seri durumdan kaldırın. XML'ye, önbelleğe alınan veri nesnesini temsil eden özelliğini CachedDataItem kullanarak Xml erişebilirsiniz.

  2. Değişiklikleri bu kopyada yapın.

  3. Aşağıdaki seçeneklerden birini kullanarak değiştirilen nesneyi yeniden veri önbelleğine seri hale getirin:

    • Değişiklikleri otomatik olarak seri hale getirmek istiyorsanız yöntemini kullanın SerializeDataInstance . Bu yöntem, veri önbelleğinde , DataTableve yazılan veri kümesi nesnelerini serileştirmek DataSetiçin DiffGram biçimini kullanır. DiffGram biçimi, çevrimdışı bir belgedeki veri önbelleğinde yapılan değişikliklerin sunucuya doğru şekilde gönderilmesini sağlar.

    • Önbelleğe alınan verilerde yapılan değişiklikler için kendi serileştirmenizi gerçekleştirmek istiyorsanız doğrudan özelliğine Xml yazabilirsiniz. Veritabanını , DataTableveya yazılan veri kümesindeki DataSetverilerde yapılan değişikliklerle güncelleştirmek için kullanıyorsanız DataAdapter DiffGram biçimini belirtin. Aksi takdirde, DataAdapter var olan satırları değiştirmek yerine yeni satırlar ekleyerek veritabanını güncelleştirir.

Geçerli değeri seri durumdan çıkarmadan verileri değiştirme

Bazı durumlarda, önce geçerli değeri seri durumdan çıkarmadan önbelleğe alınan nesnenin değerini değiştirmek isteyebilirsiniz. Örneğin, dize veya tamsayı gibi basit bir türe sahip bir nesnenin değerini değiştiriyorsanız veya sunucudaki bir belgede önbelleğe alınmış DataSet bir öğeyi başlatıyorsanız bunu yapabilirsiniz. Bu gibi durumlarda, önce önbelleğe alınan nesnenin SerializeDataInstance geçerli değerini seri durumdan çıkarmadan yöntemini kullanabilirsiniz.

Aşağıdaki kod örneği, Excel çalışma kitabı projesinin sınıfında önbelleğe alınmış bir dizenin Sheet1 değerinin nasıl değiştireceğini gösterir. Bu örnek, yöntemi için Save sağlanan daha büyük bir örneğin parçasıdır.

serverDocument1 = new ServerDocument(documentPath);
CachedDataHostItem hostItem1 = 
    serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

if (dataItem1 != null &&
    Type.GetType(dataItem1.DataType) == typeof(string))
{
    dataItem1.SerializeDataInstance("This is the new cached string value.");
    serverDocument1.Save();
}

Veri önbelleğindeki null değerleri değiştirme

Veri önbelleği, belge kaydedildiğinde ve kapatıldığında null değerine sahip nesneleri depolamaz. Önbelleğe alınan verileri değiştirdiğinizde bu sınırlamanın çeşitli sonuçları vardır:

  • Veri önbelleğindeki herhangi bir nesneyi null değerine ayarlarsanız, belge açıldığında veri önbelleğindeki tüm nesneler otomatik olarak null olarak ayarlanır ve belge kaydedilip kapatıldığında veri önbelleğinin tamamı temizlenir. Başka bir ifadeyle, önbelleğe alınan tüm nesneler veri önbelleğinden kaldırılır ve CachedData koleksiyon boş olur.

  • Veri önbelleğinde null nesneler içeren bir çözüm oluşturursanız ve belge ilk kez açılmadan önce sınıfını kullanarak ServerDocument bu nesneleri başlatmak istiyorsanız, veri önbelleğindeki tüm nesneleri başlattığınızdan emin olmanız gerekir. Yalnızca bazı nesneleri başlatırsanız, belge açıldığında tüm nesneler null olarak ayarlanır ve belge kaydedilip kapatıldığında veri önbelleğinin tamamı temizlenir.

Önbelleğe yazılan veri kümelerine erişme

Yazılan bir veri kümesindeki verilere hem Office çözümünden hem de Windows Forms uygulaması veya ASP.NET projesi gibi Office dışındaki bir uygulamadan erişmek istiyorsanız, yazılan veri kümesini her iki projede de başvuruda bulunabilecek ayrı bir derlemede tanımlamanız gerekir. Veri Kaynağı Yapılandırma sihirbazını veya Veri Kümesi Tasarım Aracı kullanarak her projeye yazılan veri kümesini eklerseniz, .NET Framework iki projedeki yazılan veri kümelerini farklı türler olarak ele alır. Yazılan veri kümeleri oluşturma hakkında daha fazla bilgi için bkz . Visual Studio'da veri kümeleri oluşturma ve yapılandırma.