public void SimpleCRUDTest() { var store = new SqlCeDataStore("test.sdf"); store.AddType <TestItem>(); store.CreateStore(); var itemA = new TestItem("ItemA"); var itemB = new TestItem("ItemB"); var itemC = new TestItem("ItemC"); // INSERT store.Insert(itemA); store.Insert(itemB); store.Insert(itemC); // COUNT var count = store.Count <TestItem>(); Assert.AreEqual(3, count); // SELECT var item = store.Select <TestItem>("Name", itemB.Name).FirstOrDefault(); Assert.IsTrue(item.Equals(itemB)); item = store.Select <TestItem>(3); Assert.IsTrue(item.Equals(itemC)); // FETCH // UPDATE itemC.Name = "NewItem"; itemC.Address = "Changed Address"; itemC.TS = new TimeSpan(8, 23, 30); store.Update(itemC); item = store.Select <TestItem>("Name", "ItemC").FirstOrDefault(); Assert.IsNull(item); item = store.Select <TestItem>("Name", itemC.Name).FirstOrDefault(); Assert.IsTrue(item.Equals(itemC)); // CONTAINS var exists = store.Contains(itemA); Assert.IsTrue(exists); // DELETE store.Delete(itemA, false); item = store.Select <TestItem>("Name", itemA.Name).FirstOrDefault(); Assert.IsNull(item); // CONTAINS exists = store.Contains(itemA); Assert.IsFalse(exists); // COUNT count = store.Count <TestItem>(); Assert.AreEqual(2, count); }
public void SeekTestStatic() { var sw1 = new Stopwatch(); var store = new SqlCeDataStore("test.sdf"); store.AddType <SeekItem>(); store.CreateOrUpdateStore(); // populate test data var generator = new DataGenerator(); var items = generator.GenerateSeekItems(100); store.BulkInsert(items); // no delegate sw1.Reset(); sw1.Start(); var item = store.First <SeekItem>(System.Data.SqlServerCe.DbSeekOptions.BeforeEqual, "SeekField", 11); sw1.Stop(); // item should have a value of 10 Assert.AreEqual(10, item.SeekField); }
public void SimpleTransactionTest() { var store = new SqlCeDataStore("test_trans.sdf"); store.AddType <LateAddItem>(); if (store.StoreExists) { store.DeleteStore(); } store.CreateStore(); var testEntity = new LateAddItem() { ID = -1 }; store.Insert(testEntity); var id = testEntity.ID; store.BeginTransaction(); store.Delete <LateAddItem>(id); // timeout here, at insert store.Insert(new LateAddItem() { ID = -1 }); store.Commit(); }
public void DelegatePerfTest() { var iterations = 1000; var sw1 = new Stopwatch(); var sw2 = new Stopwatch(); var store = new SqlCeDataStore("test.sdf"); store.AddType <TestItem>(); store.AddType <TestItemD>(); store.CreateOrUpdateStore(); // populate test data var generator = new DataGenerator(); var items = generator.GenerateTestItems(100); store.BulkInsert(items); foreach (var i in items) { store.Insert((TestItemD)i); } // no delegate sw1.Reset(); sw1.Start(); for (int i = 0; i < iterations; i++) { var list = store.Select <TestItem>(); } sw1.Stop(); // with delegate sw2.Reset(); sw2.Start(); for (int i = 0; i < iterations; i++) { var list = store.Select <TestItemD>(); } sw2.Stop(); var noDelegate = sw1.ElapsedMilliseconds; var withDelegate = sw2.ElapsedMilliseconds; Debug.WriteLine(string.Format("Delegate gave a {0}% improvement", ((float)(noDelegate - withDelegate) / withDelegate) * 100f)); }
public DataService() { m_store = new SqlCeDataStore("MyData.sdf"); m_store.DeleteStore(); if (!m_store.StoreExists) { m_store.CreateStore(); } m_store.AddType <Customer>(); m_store.AddType <ProductOrder>(); m_store.AddType <ShipAddress>(); m_store.AddType <State>(); m_store.EnsureCompatibility(); }
public void BasicLocalReplicationTest() { var source = new SqlCeDataStore("source.sdf"); if (!source.StoreExists) { source.CreateStore(); } source.AddType <TestItem>(); var destination = new SqlCeDataStore("dest.sdf"); if (!destination.StoreExists) { destination.CreateStore(); } // build a replictor to send data to the destiantion store var replicator = new Replicator(destination, ReplicationBehavior.ReplicateAndDelete); // replication is opt-in, so tell it what type(s) we want to replicate replicator.RegisterEntity <TestItem>(); // add the replicator to the source source.Replicators.Add(replicator); // watch an event for when data batches go out replicator.DataReplicated += delegate { // get a count Debug.WriteLine(string.Format("Sent {0} rows", replicator.GetCount <TestItem>())); }; var rows = 200; // put some data in the source for (int i = 0; i < rows; i++) { var item = new TestItem(string.Format("Item {0}", i)); source.Insert(item); } int remaining = 0; // loop until the source table is empty do { Thread.Sleep(500); remaining = source.Count <TestItem>(); } while(remaining > 0); // make sure the destination has all rows Assert.AreEqual(rows, destination.Count <TestItem>()); }
public void BuildCleanDB() { m_store = new SqlCeDataStore("testDB.sdf"); if (m_store.StoreExists) { m_store.DeleteStore(); } m_store.CreateStore(); m_store.AddType <TestItem>(); }
public void BinaryTest() { var store = new SqlCeDataStore("typetest.sdf"); store.AddType <BinaryData>(); Assert.IsTrue(store.StoreExists); store.TruncateTable("BinaryData"); var text = "Section 1\r\n" + "All legislative Powers herein granted shall be vested in a Congress of the United States, which shall consist of a Senate and House of Representatives.\r\n" + "Section 2\r\n" + "1: The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature.\r\n" + "2: No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen.\r\n" + "3: Representatives and direct Taxes shall be apportioned among the several States which may be included within this Union, according to their respective Numbers, which shall be determined by adding to the whole Number of free Persons, including those bound to Service for a Term of Years, and excluding Indians not taxed, three fifths of all other Persons.2 The actual Enumeration shall be made within three Years after the first Meeting of the Congress of the United States, and within every subsequent Term of ten Years, in such Manner as they shall by Law direct. The Number of Representatives shall not exceed one for every thirty Thousand, but each State shall have at Least one Representative; and until such enumeration shall be made, the State of New Hampshire shall be entitled to chuse three, Massachusetts eight, Rhode-Island and Providence Plantations one, Connecticut five, New-York six, New Jersey four, Pennsylvania eight, Delaware one, Maryland six, Virginia ten, North Carolina five, South Carolina five, and Georgia three.\r\n" + "4: When vacancies happen in the Representation from any State, the Executive Authority thereof shall issue Writs of Election to fill such Vacancies.\r\n" + "5: The House of Representatives shall chuse their Speaker and other Officers; and shall have the sole Power of Impeachment.\r\n"; var item = new BinaryData() { NTextField = text, ImageField = Encoding.UTF8.GetBytes(text), BinaryField = Encoding.Unicode.GetBytes(text) }; store.Insert(item); var item2 = store.Select <BinaryData>(item.ID); Assert.AreEqual(item.NTextField, item2.NTextField); var text2 = Encoding.UTF8.GetString(item2.ImageField); Assert.IsTrue(string.Compare(text, text2) == 0); var text3 = Encoding.Unicode.GetString(item2.BinaryField); Assert.IsTrue(string.Compare(text, text3) == 0); }
public void SimpleCRUDTest() { bool beforeInsert = false; bool afterInsert = false; bool beforeUpdate = false; bool afterUpdate = false; bool beforeDelete = false; bool afterDelete = false; var store = new SqlCeDataStore("simpleCRUDTest.sdf"); store.AddType <TestItem>(); store.CreateStore(); store.BeforeInsert += delegate { beforeInsert = true; }; store.AfterInsert += delegate { afterInsert = true; }; store.BeforeUpdate += delegate { beforeUpdate = true; }; store.AfterUpdate += delegate { afterUpdate = true; }; store.BeforeDelete += delegate { beforeDelete = true; }; store.AfterDelete += delegate { afterDelete = true; }; var itemA = new TestItem("ItemA"); itemA.UUID = Guid.NewGuid(); itemA.ITest = 5; itemA.FTest = 3.14F; itemA.DBTest = 1.4D; itemA.DETest = 2.678M; var itemB = new TestItem("ItemB"); var itemC = new TestItem("ItemC"); // INSERT store.Insert(itemA); Assert.IsTrue(beforeInsert, "BeforeInsert never fired"); Assert.IsTrue(afterInsert, "AfterInsert never fired"); store.Insert(itemB); store.Insert(itemC); // COUNT var count = store.Count <TestItem>(); Assert.AreEqual(3, count); // SELECT var items = store.Select <TestItem>(); Assert.AreEqual(3, items.Count()); var item = store.Select <TestItem>("Name", itemB.Name).FirstOrDefault(); Assert.IsTrue(item.Equals(itemB)); item = store.Select <TestItem>(3); Assert.IsTrue(item.Equals(itemC)); // FETCH // UPDATE itemC.Name = "NewItem"; itemC.Address = "Changed Address"; itemC.TS = new TimeSpan(8, 23, 30); itemC.BigString = "little string"; // test rollback store.BeginTransaction(); store.Update(itemC); item = store.Select <TestItem>(3); Assert.IsTrue(item.Name == itemC.Name); store.Rollback(); item = store.Select <TestItem>(3); Assert.IsTrue(item.Name != itemC.Name); // test commit store.BeginTransaction(System.Data.IsolationLevel.Unspecified); store.Update(itemC); store.Commit(); Assert.IsTrue(beforeUpdate, "BeforeUpdate never fired"); Assert.IsTrue(afterUpdate, "AfterUpdate never fired"); item = store.Select <TestItem>("Name", "ItemC").FirstOrDefault(); Assert.IsNull(item); item = store.Select <TestItem>("Name", itemC.Name).FirstOrDefault(); Assert.IsTrue(item.Equals(itemC)); // CONTAINS var exists = store.Contains(itemA); Assert.IsTrue(exists); // DELETE store.Delete(itemA); Assert.IsTrue(beforeDelete, "BeforeDelete never fired"); Assert.IsTrue(afterDelete, "AfterDelete never fired"); item = store.Select <TestItem>("Name", itemA.Name).FirstOrDefault(); Assert.IsNull(item); // CONTAINS exists = store.Contains(itemA); Assert.IsFalse(exists); // COUNT count = store.Count <TestItem>(); Assert.AreEqual(2, count); // this will create the table in newer versions of ORM store.AddType <LateAddItem>(); var newitems = store.Select <LateAddItem>(false); Assert.IsNotNull(newitems); }