///-------------------------------------------------------------------------------------------------
 /// <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&lt;T&gt; </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));
 }
Beispiel #2
0
        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");
            }