content
| - %VOSWARNING%
%META:TOPICPARENT{name="VirtIngresEntityFrameworkUsage"}%
---+++Manually creating EDM Associations (FKs) for the Ingres Tutorial database
The following steps will detail what is required to manually create *Associations* in your Entity Data Model.
Before commencing the process, you will need to determine where these associations exist and their multiplicity (e.g., one-to-one, one-to-many, etc.). <i><b>NOTE:</b> These steps will need to be repeated for each association.</i>
1 The first Association I will deal with is the relationship between <b><code><nowiki>cust_orders</nowiki></code></b> and <b><code><nowiki>cust_info</nowiki></code></b>, identified by the presence of the Scalar Property <b><code><nowiki>cust_no</nowiki></code></b> in both entities. This is a one-to-one relationship, as an entry in a customer order may only be associated with one customer's information.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc02.png" style="wikiautogen"/>%BR%%BR%
1 To add the Association, right-click on the <b><code>Customer</code></b> entity. Then, click *Add* -> *Association*.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc03.png" style="wikiautogen"/>%BR%%BR%
1 You will now see the *Add Association* dialog.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc04.png" style="wikiautogen"/>%BR%%BR%
1 Hit *OK*. The diagram will be refreshed to include the newly created association.%BR%%BR%
1 You now need to edit the mappings associated with the newly created association, so right-click the association on the diagram and select *Table Mapping* to display the *Mapping Details* pane.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc05.png" style="wikiautogen"/>%BR%%BR%
1 Click the line that reads <b><Add a Table or View></b> to reveal a drop down list of all entities.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc06.png" style="wikiautogen"/>%BR%%BR%
1 Here you need to select the entity on the right/far side of the association (the entity where the foreign key exists). In this example, it is the <b><code><nowiki>cust_orders</nowiki></code></b> entity.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc07.png" style="wikiautogen"/>%BR%%BR%
1 The *Mapping Details* pane now refreshes to display both ends of the association. You will now be required to provide relevant target store data types in the *Column* column for the key fields, as depicted here.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc08.png" style="wikiautogen"/>%BR%%BR%
1 Once the mapping is complete, you can build the project using *Build* -> *Build Solution*. <i><b>NOTE:</b> It is worthwhile to (re)build as each association is made, since the error messages can be a little confusing.</i>
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc09.png" style="wikiautogen"/>%BR%%BR%
1 This should result in the following error, which is included here, since I (the author) found it misleading.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc10.png" style="wikiautogen"/>%BR%%BR%
This error indicates that there are two sources — in this case, the <b><code><nowiki>cust_orders</nowiki></code></b> entity's Scalar Property <b><code><nowiki>cust_no</nowiki></code></b> and the Navigation Property <b><code><nowiki>cust_info</nowiki></code></b> in — which are being mapped to the same target column — the Ingres column <b><code><nowiki>cust_orders.cust_no</nowiki></code></b> — which is not supported.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc11.png" style="wikiautogen"/>%BR%%BR%
1 The solution is simple! Delete the mapping for Scalar Property <b><code><nowiki>cust_orders.cust_no</nowiki></code></b>. Its only purpose is to hold data representing a relationship/association (it is a Foreign Key), which has already been represented by the newly-created association and resulting Navigation Property <b><code><nowiki>cust_no</nowiki></code></b>.%BR%%BR%
Right-click on <b><code><nowiki>cust_orders.cust_no</nowiki></code></b>. Then, click *Delete*.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc12.png" style="wikiautogen"/>%BR%%BR%
1 The model diagram will refresh to reflect this change.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc14.png" style="wikiautogen"/>%BR%%BR%
1 Build the project, again, using *Build* -> *Build Solution*.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc09.png" style="wikiautogen"/>%BR%%BR%
1 The project should now build fine.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc13.png" style="wikiautogen"/>%BR%%BR%
You will need to repeat these steps for each association until you have a completed Entity Data Model.
%BR%%BR%<img src="%ATTACHURLPATH%/VirtIngresAssc01.png" style="wikiautogen"/>%BR%%BR%
|