public void IndexByNameSet() { var meta = new DynamicMeta(new Pluralizer()); var population = new Default.DynamicPopulation(meta); var(property, owner) = meta.AddOneToOne <Organisation, Person>("Owner"); var(organisation, named) = meta.AddOneToOne <Organisation, Person>("Named"); dynamic acme = population.New <Organisation>(); dynamic gizmo = population.New <Organisation>(); dynamic jane = population.New <Person>(); dynamic john = population.New <Person>(); acme["Owner"] = jane; Assert.Equal(jane, acme.Owner); Assert.Equal(acme, jane.OrganisationWhereOwner); Assert.Equal(jane, acme["Owner"]); Assert.Equal(acme, jane["OrganisationWhereOwner"]); Assert.Equal(jane, acme[owner]); Assert.Equal(acme, jane[property]); Assert.Null(gizmo.Owner); Assert.Null(john.OrganisationWhereOwner); Assert.Null(gizmo["Owner"]); Assert.Null(john["OrganisationWhereOwner"]); Assert.Null(gizmo[owner]); Assert.Null(john[property]); // Wrong Type Assert.Throws <ArgumentException>(() => { acme["Owner"] = gizmo; }); }
public DynamicPopulation(DynamicMeta meta, params Action <DynamicMeta>[] builders) { this.Meta = meta; this.DerivationById = new Dictionary <string, IDynamicDerivation>(); this.database = new DynamicDatabase(this.Meta); foreach (Action <DynamicMeta> builder in builders) { builder?.Invoke(this.Meta); } }
internal DynamicDatabase(DynamicMeta meta) { this.meta = meta; this.roleByAssociationByRoleType = new Dictionary <IDynamicRoleType, Dictionary <DynamicObject, object> >(); this.associationByRoleByAssociationType = new Dictionary <IDynamicAssociationType, Dictionary <DynamicObject, object> >(); this.changedRoleByAssociationByRoleType = new Dictionary <IDynamicRoleType, Dictionary <DynamicObject, object> >(); this.changedAssociationByRoleByAssociationType = new Dictionary <IDynamicAssociationType, Dictionary <DynamicObject, object> >(); }
public void IndexSet() { var meta = new DynamicMeta(new Pluralizer()); meta.AddUnit <Person, string>("FirstName"); var population = new Default.DynamicPopulation(meta); dynamic jubayer = population.New <Person>(); dynamic walter = population.New <Person>(); jubayer.FirstName = "Jubayer"; walter.FirstName = "Walter"; Assert.Equal("Jubayer", jubayer.FirstName); Assert.Equal("Walter", walter.FirstName); }
public DynamicChangeSet(DynamicMeta meta, Dictionary <IDynamicRoleType, Dictionary <DynamicObject, object> > roleByAssociationByRoleType, Dictionary <IDynamicAssociationType, Dictionary <DynamicObject, object> > associationByRoleByAssociationType) { this.Meta = meta; this.roleByAssociationByRoleType = roleByAssociationByRoleType; this.associationByRoleByRoleType = associationByRoleByAssociationType; }