示例#1
0
        static public void Delete(System.String id, esSqlAccessType sqlAccessType)
        {
            var obj = new ConcurrencyTest();

            obj.Id = id;
            obj.AcceptChanges();
            obj.MarkAsDeleted();
            obj.Save(sqlAccessType);
        }
        public void ConcurrencyOnUpdateDelete()
        {
            ConcurrencyTestCollection collection = new ConcurrencyTestCollection();

            switch (collection.es.Connection.ProviderSignature.DataProviderName)
            {
                case "EntitySpaces.SqlServerCeProvider":
                case "EntitySpaces.SqlServerCe4Provider":
                    Assert.Ignore("Not implemented for SqlCe");
                    break;

                default:
                    try
                    {
                        using (esTransactionScope scope = new esTransactionScope())
                        {
                            // Setup
                            ConcurrencyTest entity = new ConcurrencyTest();
                            if (entity.LoadByPrimaryKey("abc"))
                            {
                                entity.MarkAsDeleted();
                                entity.Save();
                            }

                            entity = new ConcurrencyTest();
                            entity.Id = "abc";
                            entity.Name = "Test 1";
                            entity.Save();

                            // Test
                            entity = new ConcurrencyTest();
                            entity.LoadByPrimaryKey("abc");
                            entity.Name = "Test 2";

                            ConcurrencyTest entity2 = new ConcurrencyTest();
                            entity2.LoadByPrimaryKey("abc");
                            entity2.MarkAsDeleted();

                            entity.Save();
                            entity2.Save();
                            Assert.Fail("Concurrency Exception not thrown.");
                        }
                    }
                    catch (EntitySpaces.Interfaces.esConcurrencyException cex)
                    {
                        switch (collection.es.Connection.ProviderSignature.DataProviderName)
                        {
                            case "EntitySpaces.MSAccessProvider":
                            case "EntitySpaces.MySqlClientProvider":
                            case "EntitySpaces.SQLiteProvider":
                            case "EntitySpaces.SqlServerCeProvider":
                            case "EntitySpaces.SybaseSqlAnywhereProvider":
                            case "EntitySpaces.VistaDBProvider":
                            case "EntitySpaces.VistaDB4Provider":
                                Assert.AreEqual("Error in", cex.Message.Substring(0, 8));
                                break;

                            case "EntitySpaces.OracleClientProvider":
                                Assert.AreEqual("ORA-20101", cex.Message.Substring(0, 9));
                                break;

                            default:
                                Assert.AreEqual("Update failed", cex.Message.Substring(0, 13));
                                break;
                        }
                    }
                    finally
                    {
                        // Cleanup
                        ConcurrencyTest entity = new ConcurrencyTest();
                        if (entity.LoadByPrimaryKey("abc"))
                        {
                            entity.MarkAsDeleted();
                            entity.Save();
                        }
                    }
                    break;
            }
        }
示例#3
0
 public ConcurrencyTestProxyStub(ConcurrencyTest obj, bool dirtyColumnsOnly)
 {
     theEntity             = this.entity = obj;
     this.dirtyColumnsOnly = dirtyColumnsOnly;
 }
示例#4
0
 public ConcurrencyTestProxyStub(ConcurrencyTest obj)
 {
     theEntity = this.entity = obj;
 }