As previously noted, Elementary can automatically infer a lot of the schema for your database. This is done at load-time, not at run-time, which means there is no performance penalty other than at start-up when you use inference.
At any point in time you can see what is being inferred, along with what's been loaded, by printing out Elementary.LoadLog. Example:
Console.WriteLine(Elementary.LoadLog);
In the case of our previous 1-n example, here is the load log:
Loading assembly Elementary.Northwind.Samples Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Category Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Category Loading property: Id Loading property: Name Loading property: Description Loading property: Picture Loading class: Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductInfo Alias: Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductInfo Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading class: Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductDetail Alias: Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductDetail Loading property: QuantityPerUnit Loading property: UnitPrice Loading property: UnitsInStock Loading property: UnitsOnOrder Loading property: ReorderLevel Loading property: Discontinued Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading class: Elementary.Northwind.Samples.Attributes.MappingInheritance.Products Alias: Elementary.Northwind.Samples.Attributes.MappingInheritance.Products Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading class: Elementary.Northwind.Samples.Attributes.SimpleExample.Product Alias: Elementary.Northwind.Samples.Attributes.SimpleExample.Product Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Supplier Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Supplier Loading property: CompanyName Loading property: SupplierID Loading property: Products (1-n :: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Product) Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Product Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Product Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading property: Category (1-1 :: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Category) Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Employee Alias: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Employee Loading property: EmployeeID Loading property: FirstName Loading property: LastName Loading property: Territories (n-n :: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Territory) Join: Inverse: False Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Territory Alias: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Territory Loading property: RegionID Loading property: TerritoryDescription Loading property: TerritoryID Loading property: Employees (n-n :: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Employee) Join: Inverse: False Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Category Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Category Loading property: Id Loading property: Name Loading property: Description Loading property: Picture Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Product Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Product Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading property: Category (1-1 :: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Category) SyncTarget: CategoryID SyncSource: Id Loading class: Elementary.Northwind.Samples.Attributes.AliasesAndFilters.Product Alias: Elementary.Northwind.Samples.Attributes.AliasesAndFilters.Product Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading property: QuantityPerUnit Loading property: UnitPrice Loading property: Discontinued Loading class: Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProduct Alias: Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProduct SqlFilter: Discontinued = 1 Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading property: QuantityPerUnit Loading property: UnitPrice Loading property: Discontinued Loading class: Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProductStartingWithC Alias: Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProductStartingWithC SqlFilter: ProductName LIKE 'C%' AND Discontinued = 1 Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading property: QuantityPerUnit Loading property: UnitPrice Loading property: Discontinued Loading class: Elementary.Northwind.Samples.Attributes.AliasesAndFilters.OutOfStockProduct Alias: Elementary.Northwind.Samples.Attributes.AliasesAndFilters.OutOfStockProduct SqlFilter: UnitsInStock=0 Loading property: UnitsInStock Loading property: UnitsOnOrder Loading property: ReorderLevel Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading property: QuantityPerUnit Loading property: UnitPrice Loading property: Discontinued Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Category Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Category Loading property: Id Loading property: Name Loading property: Description Loading property: Picture Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Product Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Product Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading property: Category (1-1 :: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Category) Parent-Child Column Mapping: categoryid-categoryid SyncTarget: CategoryID SyncSource: Id Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Supplier Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Supplier Loading property: CompanyName Loading property: SupplierID Loading property: Products (1-n :: Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Product) Parent-Child Column Mapping: supplierid-supplierid Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Category Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Category Loading property: Id Loading property: Name Loading property: Description Loading property: Picture Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Product Alias: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Product Loading property: CategoryID Loading property: ProductID Loading property: ProductName Loading property: SupplierID Loading property: Category (1-1 :: Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Category) Parent-Child Column Mapping: categoryid-categoryid SyncTarget: CategoryID SyncSource: Id Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Employee Alias: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Employee Loading property: EmployeeID Loading property: FirstName Loading property: LastName Loading property: Territories (n-n :: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Territory) Through: employeeterritories Loading class: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Territory Alias: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Territory Loading property: RegionID Loading property: TerritoryDescription Loading property: TerritoryID Loading property: Employees (n-n :: Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Employee) Through: employeeterritories Loading assembly: Elementary.Northwind.Samples Loading database: Test AutoRetrieveSchema: True Create Dynamic Classes: False Create Schema: False Connection String: Data Source=localhost; Initial Catalog=northwind; User ID=sa; Password=; Trusted_Connection=false; OleDb Connection String: Provider=sqloledb;Data Source=localhost; Initial Catalog=northwind; User ID=sa; Password=; Validate Connection: True Validate OleDb Connection: True Validate Schema: True Loading dynamic table: alphabetical list of products Loading dynamic column: categoryid Loading dynamic column: categoryname Loading dynamic column: discontinued Loading dynamic column: productid Loading dynamic column: productname Loading dynamic column: quantityperunit Loading dynamic column: reorderlevel Loading dynamic column: supplierid Loading dynamic column: unitprice Loading dynamic column: unitsinstock Loading dynamic column: unitsonorder Loading dynamic table: categories Loading dynamic column: categoryid (PK) Loading dynamic join: categoriesproducts Loading dynamic join table: categories - categoryid Loading dynamic join table: products - categoryid Loading dynamic column: categoryname Loading dynamic column: description Loading dynamic column: picture Loading dynamic table: category sales for 1997 Loading dynamic column: categoryname Loading dynamic column: categorysales Loading dynamic table: current product list Loading dynamic column: productid Loading dynamic column: productname Loading dynamic table: customer and suppliers by city Loading dynamic column: city Loading dynamic column: companyname Loading dynamic column: contactname Loading dynamic column: relationship Loading dynamic table: customercustomerdemo Loading dynamic column: customerid (PK) (FK) Loading dynamic column: customertypeid (PK) (FK) Loading dynamic table: customerdemographics Loading dynamic column: customerdesc Loading dynamic column: customertypeid (PK) Loading dynamic join: customerdemographicscustomercustomerdemo Loading dynamic join table: customerdemographics - customertypeid Loading dynamic join table: customercustomerdemo - customertypeid Loading dynamic table: customers Loading dynamic column: address Loading dynamic column: city Loading dynamic column: companyname Loading dynamic column: contactname Loading dynamic column: contacttitle Loading dynamic column: country Loading dynamic column: customerid (PK) Loading dynamic join: customerscustomercustomerdemo Loading dynamic join table: customers - customerid Loading dynamic join table: customercustomerdemo - customerid Loading dynamic join: customersorders Loading dynamic join table: customers - customerid Loading dynamic join table: orders - customerid Loading dynamic column: fax Loading dynamic column: phone Loading dynamic column: postalcode Loading dynamic column: region Loading dynamic table: employees Loading dynamic column: address Loading dynamic column: birthdate Loading dynamic column: city Loading dynamic column: country Loading dynamic column: employeeid (PK) Loading dynamic join: employeesemployees Loading dynamic join table: employees - employeeid Loading dynamic join table: employees - reportsto Loading dynamic join: employeesemployeeterritories Loading dynamic join table: employees - employeeid Loading dynamic join table: employeeterritories - employeeid Loading dynamic join: employeesorders Loading dynamic join table: employees - employeeid Loading dynamic join table: orders - employeeid Loading dynamic column: extension Loading dynamic column: firstname Loading dynamic column: hiredate Loading dynamic column: homephone Loading dynamic column: lastname Loading dynamic column: notes Loading dynamic column: photo Loading dynamic column: photopath Loading dynamic column: postalcode Loading dynamic column: region Loading dynamic column: reportsto (FK) Loading dynamic column: title Loading dynamic column: titleofcourtesy Loading dynamic table: employeeterritories Loading dynamic column: employeeid (PK) (FK) Loading dynamic column: territoryid (PK) (FK) Loading dynamic table: invoices Loading dynamic column: address Loading dynamic column: city Loading dynamic column: country Loading dynamic column: customerid Loading dynamic column: customername Loading dynamic column: discount Loading dynamic column: employeeid Loading dynamic column: extendedprice Loading dynamic column: freight Loading dynamic column: orderdate Loading dynamic column: orderid Loading dynamic column: postalcode Loading dynamic column: productid Loading dynamic column: productname Loading dynamic column: quantity Loading dynamic column: region Loading dynamic column: requireddate Loading dynamic column: salesperson Loading dynamic column: shipaddress Loading dynamic column: shipcity Loading dynamic column: shipcountry Loading dynamic column: shipname Loading dynamic column: shippeddate Loading dynamic column: shipperid Loading dynamic column: shippername Loading dynamic column: shippostalcode Loading dynamic column: shipregion Loading dynamic column: unitprice Loading dynamic table: order details Loading dynamic column: discount Loading dynamic column: orderid (PK) (FK) Loading dynamic column: productid (PK) (FK) Loading dynamic column: quantity Loading dynamic column: unitprice Loading dynamic table: order details extended Loading dynamic column: discount Loading dynamic column: extendedprice Loading dynamic column: orderid Loading dynamic column: productid Loading dynamic column: productname Loading dynamic column: quantity Loading dynamic column: unitprice Loading dynamic table: order subtotals Loading dynamic column: orderid Loading dynamic column: subtotal Loading dynamic table: orders Loading dynamic column: customerid (FK) Loading dynamic column: employeeid (FK) Loading dynamic column: freight Loading dynamic column: orderdate Loading dynamic column: orderid (PK) Loading dynamic join: ordersorder details Loading dynamic join table: orders - orderid Loading dynamic join table: order details - orderid Loading dynamic column: requireddate Loading dynamic column: shipaddress Loading dynamic column: shipcity Loading dynamic column: shipcountry Loading dynamic column: shipname Loading dynamic column: shippeddate Loading dynamic column: shippostalcode Loading dynamic column: shipregion Loading dynamic column: shipvia (FK) Loading dynamic table: orders qry Loading dynamic column: address Loading dynamic column: city Loading dynamic column: companyname Loading dynamic column: country Loading dynamic column: customerid Loading dynamic column: employeeid Loading dynamic column: freight Loading dynamic column: orderdate Loading dynamic column: orderid Loading dynamic column: postalcode Loading dynamic column: region Loading dynamic column: requireddate Loading dynamic column: shipaddress Loading dynamic column: shipcity Loading dynamic column: shipcountry Loading dynamic column: shipname Loading dynamic column: shippeddate Loading dynamic column: shippostalcode Loading dynamic column: shipregion Loading dynamic column: shipvia Loading dynamic table: product sales for 1997 Loading dynamic column: categoryname Loading dynamic column: productname Loading dynamic column: productsales Loading dynamic table: products Loading dynamic column: categoryid (FK) Loading dynamic column: discontinued Loading dynamic column: productid (PK) Loading dynamic join: productsorder details Loading dynamic join table: products - productid Loading dynamic join table: order details - productid Loading dynamic column: productname Loading dynamic column: quantityperunit Loading dynamic column: reorderlevel Loading dynamic column: supplierid (FK) Loading dynamic column: unitprice Loading dynamic column: unitsinstock Loading dynamic column: unitsonorder Loading dynamic table: products above average price Loading dynamic column: productid Loading dynamic column: productname Loading dynamic column: unitprice Loading dynamic table: products by category Loading dynamic column: categoryid Loading dynamic column: categoryname Loading dynamic column: discontinued Loading dynamic column: productid Loading dynamic column: productname Loading dynamic column: quantityperunit Loading dynamic column: unitsinstock Loading dynamic table: quarterly orders Loading dynamic column: city Loading dynamic column: companyname Loading dynamic column: country Loading dynamic column: customerid Loading dynamic table: region Loading dynamic column: regiondescription Loading dynamic column: regionid (PK) Loading dynamic join: regionterritories Loading dynamic join table: region - regionid Loading dynamic join table: territories - regionid Loading dynamic table: sales by category Loading dynamic column: categoryid Loading dynamic column: categoryname Loading dynamic column: productname Loading dynamic column: productsales Loading dynamic table: sales totals by amount Loading dynamic column: companyname Loading dynamic column: orderid Loading dynamic column: saleamount Loading dynamic column: shippeddate Loading dynamic table: shippers Loading dynamic column: companyname Loading dynamic column: phone Loading dynamic column: shipperid (PK) Loading dynamic join: shippersorders Loading dynamic join table: shippers - shipperid Loading dynamic join table: orders - shipvia Loading dynamic table: summary of sales by quarter Loading dynamic column: orderid Loading dynamic column: shippeddate Loading dynamic column: subtotal Loading dynamic table: summary of sales by year Loading dynamic column: orderid Loading dynamic column: shippeddate Loading dynamic column: subtotal Loading dynamic table: suppliers Loading dynamic column: address Loading dynamic column: city Loading dynamic column: companyname Loading dynamic column: contactname Loading dynamic column: contacttitle Loading dynamic column: country Loading dynamic column: fax Loading dynamic column: homepage Loading dynamic column: phone Loading dynamic column: postalcode Loading dynamic column: region Loading dynamic column: supplierid (PK) Loading dynamic join: suppliersproducts Loading dynamic join table: suppliers - supplierid Loading dynamic join table: products - supplierid Loading dynamic table: territories Loading dynamic column: regionid (FK) Loading dynamic column: territorydescription Loading dynamic column: territoryid (PK) Loading dynamic join: territoriesemployeeterritories Loading dynamic join table: territories - territoryid Loading dynamic join table: employeeterritories - territoryid Inferring class relationships... Inferring tables for classes... [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Category] Looking for table match... Looking for elementary.northwind.samples.attributes.childmappingonetooneinferred.category... Looking for elementary.northwind.samples.attributes.childmappingonetooneinferred.categories... Looking for category... Looking for categories... Found match: categories [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Supplier] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Territory] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Supplier] Looking for table match... Looking for elementary.northwind.samples.attributes.childmappingonetongenericinferred.supplier... Looking for elementary.northwind.samples.attributes.childmappingonetongenericinferred.suppliers... Looking for supplier... Looking for suppliers... Found match: suppliers [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProduct] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Employee] Looking for table match... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for employee... Looking for employees... Found match: employees [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProductStartingWithC] [Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductInfo] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Product] Looking for table match... Looking for elementary.northwind.samples.attributes.childmappingonetooneinferred.product... Looking for elementary.northwind.samples.attributes.childmappingonetooneinferred.products... Looking for product... Looking for products... Found match: products [Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductDetail] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Employee] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Product] [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.Product] Looking for table match... Looking for elementary.northwind.samples.attributes.aliasesandfilters.product... Looking for elementary.northwind.samples.attributes.aliasesandfilters.products... Looking for product... Looking for products... Found match: products [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Product] [Elementary.Northwind.Samples.Attributes.SimpleExample.Product] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Category] Looking for table match... Looking for elementary.northwind.samples.attributes.childmappingonetongenericinferred.category... Looking for elementary.northwind.samples.attributes.childmappingonetongenericinferred.categories... Looking for category... Looking for categories... Found match: categories [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Territory] Looking for table match... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territory... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for territory... Looking for territories... Found match: territories [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Product] Looking for table match... Looking for elementary.northwind.samples.attributes.childmappingonetongenericinferred.product... Looking for elementary.northwind.samples.attributes.childmappingonetongenericinferred.products... Looking for product... Looking for products... Found match: products [Elementary.Northwind.Samples.Attributes.MappingInheritance.Products] Looking for table match... Looking for elementary.northwind.samples.attributes.mappinginheritance.product... Looking for elementary.northwind.samples.attributes.mappinginheritance.products... Looking for product... Looking for products... Found match: products [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.OutOfStockProduct] Inferring through tables for classes... [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Supplier] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Territory] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Supplier] [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProduct] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Employee] Looking for through table match... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeselementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeesterritories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeesterritories... Looking for employeesterritories... Looking for employeeselementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for employeesterritories... Looking for employeesterritories... Looking for employeeselementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for employeesterritories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeelementary.northwind.samples.attributes.childmappingntongenericinferred.territory... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeterritory... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeterritory... Looking for employeeterritory... Looking for employeeelementary.northwind.samples.attributes.childmappingntongenericinferred.territory... Looking for employeeterritory... Looking for employeterritory... Looking for employeelementary.northwind.samples.attributes.childmappingntongenericinferred.territory... Looking for employeterritory... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeelementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeterritories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeterritories... Looking for employeeterritories... Found match: employeeterritories [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProductStartingWithC] [Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductInfo] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Product] [Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductDetail] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Employee] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Product] [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.Product] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Product] [Elementary.Northwind.Samples.Attributes.SimpleExample.Product] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Territory] Looking for through table match... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territorieselementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoriesemployees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoriesemployees... Looking for territoriesemployees... Looking for territorieselementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for territoriesemployees... Looking for territoriesemployees... Looking for territorieselementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for territoriesemployees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoryelementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoryemployee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoryemploye... Looking for territoryemployee... Looking for territoryelementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for territoryemploye... Looking for territoryemploye... Looking for territoryelementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for territoryemployee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoryelementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoryemployees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoryemployees... Looking for territoryemployees... Looking for territoryelementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for territoryemployees... Looking for territoryemployees... Looking for territoryelementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for territoryemployees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territorieselementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoriesemployee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territoriesemploye... Looking for territoriesemployee... Looking for territorieselementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for territoriesemploye... Looking for territoriesemploye... Looking for territorieselementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for territoriesemployee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territories_elementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territories_employees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territories_employees... Looking for territories_employees... Looking for territories_elementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for territories_employees... Looking for territories_employees... Looking for territories_elementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for territories_employees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territory_elementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territory_employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territory_employe... Looking for territory_employee... Looking for territory_elementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for territory_employe... Looking for territory_employe... Looking for territory_elementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for territory_employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territory_elementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territory_employees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territory_employees... Looking for territory_employees... Looking for territory_elementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for territory_employees... Looking for territory_employees... Looking for territory_elementary.northwind.samples.attributes.childmappingntongenericinferred.employees... Looking for territory_employees... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territories_elementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territories_employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.territories_employe... Looking for territories_employee... Looking for territories_elementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for territories_employe... Looking for territories_employe... Looking for territories_elementary.northwind.samples.attributes.childmappingntongenericinferred.employee... Looking for territories_employee... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeselementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeesterritories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeesterritories... Looking for employeesterritories... Looking for employeeselementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for employeesterritories... Looking for employeesterritories... Looking for employeeselementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for employeesterritories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeelementary.northwind.samples.attributes.childmappingntongenericinferred.territory... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeterritory... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeterritory... Looking for employeeterritory... Looking for employeeelementary.northwind.samples.attributes.childmappingntongenericinferred.territory... Looking for employeeterritory... Looking for employeterritory... Looking for employeelementary.northwind.samples.attributes.childmappingntongenericinferred.territory... Looking for employeterritory... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeelementary.northwind.samples.attributes.childmappingntongenericinferred.territories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeterritories... Looking for elementary.northwind.samples.attributes.childmappingntongenericinferred.employeeterritories... Looking for employeeterritories... Found match: employeeterritories [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Product] [Elementary.Northwind.Samples.Attributes.MappingInheritance.Products] [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.OutOfStockProduct] Inferring linked properties for classes... [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Supplier] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Territory] n-n [Employees] looking for parent match... Looking for territory_id... Looking for territories_id... Looking for territoryid... Found n-n [Employees] looking for child match... Looking for employe_id... Looking for employees_id... Looking for employeid... Looking for employeesid... Looking for employeeid... Found n-n [Employees] Setting parentColumn to territories.territoryid n-n [Employees] Setting join table parentColumn to employeeterritories.territoryid n-n [Employees] Setting join table childColumn to employeeterritories.employeeid n-n [Employees] Setting childColumn to employees.employeeid [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Supplier] 1-n [Products] Setting parentColumn to supplierid 1-n [Products] looking for childColumn match... Looking for supplier_id... Looking for suppliers_id... Looking for supplierid... 1-n [Products] Setting childColumn to supplierid [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProduct] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Employee] n-n [Territories] looking for parent match... Looking for employe_id... Looking for employees_id... Looking for employeid... Looking for employeesid... Looking for employeeid... Found n-n [Territories] looking for child match... Looking for territory_id... Looking for territories_id... Looking for territoryid... Found n-n [Territories] Setting parentColumn to employees.employeeid n-n [Territories] Setting join table parentColumn to employeeterritories.employeeid n-n [Territories] Setting join table childColumn to employeeterritories.territoryid n-n [Territories] Setting childColumn to territories.territoryid [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.DiscontinuedProductStartingWithC] [Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductInfo] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOneInferred.Product] 1-1 [Category] Setting childColumn to categoryid 1-1 [Category] looking for parentColumn match... Looking for category_id... Looking for categories_id... Looking for categoryid... 1-1 [Category] Setting parentColumn to categoryid [Elementary.Northwind.Samples.Attributes.MappingInheritance.ProductDetail] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGeneric.Employee] n-n [Territories] looking for parent match... Looking for employe_id... Looking for employees_id... Looking for employeid... Looking for employeesid... Looking for employeeid... Found n-n [Territories] looking for child match... Looking for territory_id... Looking for territories_id... Looking for territoryid... Found n-n [Territories] Setting parentColumn to employees.employeeid n-n [Territories] Setting join table parentColumn to employeeterritories.employeeid n-n [Territories] Setting join table childColumn to employeeterritories.territoryid n-n [Territories] Setting childColumn to territories.territoryid [Elementary.Northwind.Samples.Attributes.ChildMappingOneToOne.Product] [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.Product] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Product] [Elementary.Northwind.Samples.Attributes.SimpleExample.Product] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGeneric.Category] [Elementary.Northwind.Samples.Attributes.ChildMappingNToNGenericInferred.Territory] n-n [Employees] looking for parent match... Looking for territory_id... Looking for territories_id... Looking for territoryid... Found n-n [Employees] looking for child match... Looking for employe_id... Looking for employees_id... Looking for employeid... Looking for employeesid... Looking for employeeid... Found n-n [Employees] Setting parentColumn to territories.territoryid n-n [Employees] Setting join table parentColumn to employeeterritories.territoryid n-n [Employees] Setting join table childColumn to employeeterritories.employeeid n-n [Employees] Setting childColumn to employees.employeeid [Elementary.Northwind.Samples.Attributes.ChildMappingOneToNGenericInferred.Product] 1-1 [Category] Setting childColumn to categoryid 1-1 [Category] looking for parentColumn match... Looking for category_id... Looking for categories_id... Looking for categoryid... 1-1 [Category] Setting parentColumn to categoryid [Elementary.Northwind.Samples.Attributes.MappingInheritance.Products] [Elementary.Northwind.Samples.Attributes.AliasesAndFilters.OutOfStockProduct] Validating references... Checking database references... Checking database native connection... Checking database OLEDB connection... Checking database schema... Checking class to table mappings... Done.
You'll notice that Elementary automatically does the following:
Loads the assembly
Loads the ElementarClasses
Loads all properties
Loads all parameters (Sql filters, SyncTargets, SyncSources, etc.)
Loads the database
Retrieves the database schema
Identifies all primary keys and foreign keys
Infers any missing schema items
Infers table names for classes
Infers relationships for 1-1
Infers relationships for 1-n
Infers relationships for n-n
Performs validation (Most are optional in Xml mappings and automatic with attribute mappings)
Checks the defined database connections and makes sure they work
(Xml only) Compares the defined database mappings to the actual schema
(Xml only) Compares the defined classes and properties and compares them to the actual assembly
Validates the class mappings to the database schema