ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping
RAD Lazy load round trip GUI Object Constraint Language (OCL) Object Query Language(OQL) XML: XML XML C/S Web API () Bold
root handleexpression handle Eco Space WinForm.cs. Eco Space EcoSpace Root Handle
Object Inspector Object Inspector Person Abstract Sealed persistence persistent XML transient
Person Add Attribute Name string Person Tool Palette Association AcctItem PayAssoc 0..* 1 UML
Person Open Source Together ECO
Schema UML Schema EcoSpaceDesign Create Database Schema Evolve Database Schema Validate Model Select UML Package UML Select UML Package Selected UML Package UML
> Available UML Package Compile EcoMoney WinForm.cs ECO Application Wizard ReferenceHandle rhroot ECO ReferenceHandle OleDbConnection rhroot EcoSpaceTypeEcoMoney.EcoMoneyEcoSpace EcoMoney.EcoMoneyEcoSpace Database DataSet ECO ExpressionHandle BoldListHandle DataSet ExpressionHandle ehperson ehpersonroothandle rhroot Expression Expression Person.allInstances OCL AutoComple Sql Expression OCL (Object Constraints Language) Sql
OCL Sql Expression OCL Syntax is Error syntax is OK Person.allInstances Sql Select * from Person OCL Sql OCL ExpressioinHandle DataGrid dgpersons Datasource ehperson Bold For Delphi BoldExpressionHandle TBoldDataSet ECO OnClick // private void btnaddperson_click(object sender, System.EventArgs e) { new Person(EcoSpace); } // private void btndelperson_click(object sender, System.EventArgs e) {
} if (dgpersons.currentrowindex!=-1) ehperson.element.getascollection(). RemoveAt(dgPersons.CurrentRowIndex); EcoSpace Person ehperson Expression Person.allInstances ehperson.element.getascollection() XML WinFormOnClosing private void WinForm_Closing(object sender, System.ComponentModel.CancelEventArgs e) { EcoSpace.UpdateDatabase(); } EcoSpaceUpdateDatabase() XML DataGrid dgacctitems, ExpressionHandle ehacctitemroothandlerhroot Expression AcctItem.allInstances DataGridehAcctItem DateGrid AcctItemColumns Name, Amount, HappenDate Person Person AccIItem AcctItemPerson 1 1 PersonAcctItem 0..* 1..1
private void btnaddacct_click(object sender, System.EventArgs e) { // if (dgpersons.currentrowindex==-1){ } MessageBox.Show(" "); return; AcctItem acct=new AcctItem(EcoSpace); acct.person=(person)ehperson.element.getascollection()[dgpersons.currentrowin dex].asobject; } private void btndelacct_click(object sender, System.EventArgs e) { } // if (dgacctitems.currentrowindex!=-1) ehacctitem.element.getascollection().removeat(dgacctitems.currentrowindex);
Person Person ECO ID DataGrid Person ModelView CoreClassesPackage Person Object Inspector Eco.DefaultStringRepresentationName Name
ECO 1. ECO CurrencyManagerHandle CurrencyManagerHandle currhandle RootHandle ehperson 2. currhandlebindcontext dgpersons 3. ehacctitemroothandlecurrhandle 4. ehacctitemexpression AcctItems ECO 1. ExpressionHandle ehall RootHandlerhRoot Expression ECOModelRoot.allInstances.asString 2. DataGrid DataSourceehAll 3. ModelView AcctItemDefaultStringReprentation Name
EcoSpace ECO ModelView PayAssoc Eco.End2.DeleteAction( End2 AcctItems) Cascade currhandle
private void btndelperson_click(object sender, System.EventArgs e) { } int index=dgpersons.currentrowindex; if (index!=-1){ } // currhandle.enabled=false; ehperson.element.getascollection().removeat(index); currhandle.enabled=true; ehacctitemexpressionacctitem.allinstances Context PersonAcctItems GetAsCollection().RemoveAt Person null private void btndelacct_click(object sender, System.EventArgs e) { // if (dgacctitems.currentrowindex!=-1){ AcctItem item= (AcctItem)ehAcctItem.Element. GetAsCollection()[dgAcctItems.CurrentRowIndex].AsObject;
} } item.asiobject().delete(); ehacctitem AcctItem AsIOjbect() IObject Delete() DelphiTDataSetDelete