public void ShouldPersistValuesOnImplementationTechnologyChangeRule()
        {
            Store             store = new Store(typeof(CoreDesignSurfaceDomainModel), typeof(Microsoft.Practices.ServiceFactory.DataContracts.DataContractDslDomainModel));
            DataContractModel dcModel;
            DataContract      dcElement;

            using (Transaction transaction = store.TransactionManager.BeginTransaction())
            {
                dcModel   = store.ElementFactory.CreateElement(DataContractModel.DomainClassId) as DataContractModel;
                dcElement = store.ElementFactory.CreateElement(DataContract.DomainClassId) as DataContract;

                dcModel.Contracts.Add(dcElement);
                dcModel.ImplementationTechnology = new DataContractAsmxExtensionProvider();

                Assert.IsNotNull(dcElement, "DataContract is null");
                Assert.IsNotNull(dcElement.DataContractModel.ImplementationTechnology, "ImplementationTechnology is null");

                // fire rules on commit
                transaction.Commit();
            }

            AsmxDataContract asmxExtender = dcElement.ObjectExtender as AsmxDataContract;

            Assert.IsNotNull(asmxExtender, "ObjectExtender is null");
            // store some value to compare later
            asmxExtender.OrderParts = true;

            using (Transaction transaction = store.TransactionManager.BeginTransaction())
            {
                dcModel.ImplementationTechnology = new DataContractWcfExtensionProvider();
                // fire rules on commit
                transaction.Commit();
            }

            // now we should have the WCF extender
            WCFDataContract wcfExtender = dcElement.ObjectExtender as WCFDataContract;

            Assert.IsNotNull(wcfExtender, "ObjectExtender is null");

            // get back the ASMX extender and check values
            using (Transaction transaction = store.TransactionManager.BeginTransaction())
            {
                dcModel.ImplementationTechnology = new DataContractAsmxExtensionProvider();
                // fire rules on commit
                transaction.Commit();
            }

            asmxExtender = dcElement.ObjectExtender as AsmxDataContract;
            Assert.IsNotNull(asmxExtender, "ObjectExtender is null");
            Assert.IsTrue(asmxExtender.OrderParts, "OrderParts in ASMX extender was not persisted");

            // check for ObjectExtenderContainer final state
            Assert.IsNotNull(dcElement.ObjectExtenderContainer, "ObjectExtenderContainer is null");
            Assert.AreEqual <int>(2, dcElement.ObjectExtenderContainer.ObjectExtenders.Count, "Extender count is not 2");
        }
示例#2
0
 protected override ModelElement ResolveModelElement(string instanceNamespace)
 {
     using (Transaction transaction = DataContractStore.TransactionManager.BeginTransaction())
     {
         DataContract dc = new DataContract(DataContractStore);
         dc.DataContractModel = new DataContractModel(DataContractStore);
         dc.DataContractModel.ProjectMappingTable = "ASMX";
         dc.Name = "FooDC";
         AsmxDataContract extender = new AsmxDataContract();
         dc.ObjectExtender     = extender;
         extender.ModelElement = dc;
         transaction.Commit();
         return(dc);
     }
 }
		protected override ModelElement ResolveModelElement(string instanceNamespace)
		{
			using (Transaction transaction = DataContractStore.TransactionManager.BeginTransaction())
			{
				DataContract dc = new DataContract(DataContractStore);
				dc.DataContractModel = new DataContractModel(DataContractStore);
				dc.DataContractModel.ProjectMappingTable = "ASMX";
				dc.Name = "FooDC";
				AsmxDataContract extender = new AsmxDataContract();
				dc.ObjectExtender = extender;
				extender.ModelElement = dc;
				transaction.Commit();
				return dc;
			}
		}