///------------------------------------------------------------------------------------------------- /// <summary> An ISchemaElement extension method that adds an implicit constraint. </summary> /// <typeparam name="T"> Generic type parameter. </typeparam> /// <param name="metadata"> The metadata to act on. </param> /// <param name="expression"> The expression. </param> /// <param name="message"> The message. </param> /// <param name="propertyName"> (Optional) name of the property. </param> /// <returns> An ConstraintBuilder<T> </returns> ///------------------------------------------------------------------------------------------------- public static ConstraintBuilder <T> AddImplicitConstraint <T>(this SchemaRelationship <T> metadata, Func <T, bool> expression, DiagnosticMessage message, string propertyName = null) where T : IModelRelationship { Contract.Requires(metadata, "metadata"); Contract.Requires(expression, "expression"); Contract.Requires(message, "message"); return(new ConstraintBuilder <T>(metadata, propertyName, expression, message, true)); }
protected override void DefineSchema(ISchema schema) { ISchemaEntity customer = new SchemaEntity <Customer>(schema); customer.DefineProperty <string>("Name"); ISchemaEntity product = new SchemaEntity <Product>(schema); product.DefineProperty <string>("Name"); ISchemaRelationship rel = new SchemaRelationship("CustomerReferencesProducts", customer, product, Cardinality.ManyToMany); }
protected override void DefineSchema(ISchema metaModel) { NamedElement = new SchemaEntity(metaModel, "NamedElement"); Library = new SchemaEntity(metaModel, "Library", NamedElement); Book = new SchemaEntity(metaModel, "Book"); Member = new SchemaEntity(metaModel, "Member", NamedElement); Loan = new SchemaEntity(metaModel, "Loan"); LoanReferencesBook = new SchemaRelationship("LoanReferencesBook", Loan, Book, Cardinality.ManyToOne, false, null, "Book"); LibraryHasBooks = new SchemaRelationship("LibraryHasBooks", Library, Book, Cardinality.OneToMany, true, null, "Books"); LibraryHasMembers = new SchemaRelationship("LibraryHasMembers", Library, Member, Cardinality.OneToMany, true, null, "Members"); LibraryHasLoans = new SchemaRelationship("LibraryHasLoans", Library, Loan, Cardinality.OneToMany, true, null, "Loans"); LoanReferencesMember = new SchemaRelationship("LoanReferencesMember", Loan, Member, Cardinality.ManyToOne, false, null, "Member"); NamedElement.DefineProperty <string>("Name"); Book.DefineProperty <string>("Title"); Book.DefineProperty <int>("Copies"); }