Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I create an association between these 2 entities without touching the DB?

I need to create a "virtual" association between these two entities (1-*) so that I can traverse them using linq, but the problem is I cannot touch the database. I have tried to manually edit the edmx many times without success, getting various mapping errors.

enter image description here

EDMX:

<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">
    <!-- EF Runtime content -->
    <edmx:Runtime>
        <!-- SSDL content -->
        <edmx:StorageModels>
        <Schema Namespace="DataAccess.SD.Store" Alias="Self" Provider="Devart.Data.Oracle" ProviderManifestToken="ORA" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
                <EntityContainer Name="SDModelsStoreContainer">
                    <EntitySet Name="CUSTOMER" EntityType="DataAccess.SD.Store.CUSTOMER" store:Type="Tables" Schema="PINNACLE" />
                    <EntitySet Name="EQUIPMENT" EntityType="DataAccess.SD.Store.EQUIPMENT" store:Type="Tables" Schema="PINNACLE" />
                </EntityContainer>
                <EntityType Name="CUSTOMER">
                    <Key>
                        <PropertyRef Name="CUSTOMEROID" />
                    </Key>
                    <Property Name="CUSTOMEROID" Type="int64" Nullable="false" />
                    <Property Name="CUSTOMER_NAME" Type="VARCHAR2" MaxLength="40" />
                    <Property Name="CUSTOMER_ACCOUNT" Type="VARCHAR2" MaxLength="20" />
                </EntityType>
                <EntityType Name="EQUIPMENT">
                    <Key>
                        <PropertyRef Name="EQUIPMENTOID" />
                    </Key>
                    <Property Name="EQUIPMENTOID" Type="int64" Nullable="false" />
                    <Property Name="OWNER_ID" Type="VARCHAR2" Nullable="false" MaxLength="30" />
                    <Property Name="EQUIPMENT_ID" Type="VARCHAR2" MaxLength="100" />
                </EntityType>
            </Schema></edmx:StorageModels>
        <!-- CSDL content -->
        <edmx:ConceptualModels>
            <Schema Namespace="DataAccess.SD" Alias="Self" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
                <EntityContainer Name="SDContext" annotation:LazyLoadingEnabled="true">
                    <EntitySet Name="Customers" EntityType="DataAccess.SD.Customer" />
                    <EntitySet Name="Trailers" EntityType="DataAccess.SD.Trailer" />
                </EntityContainer>
                <EntityType Name="Customer">
                    <Key>
                        <PropertyRef Name="Id" />
                    </Key>
                    <Property Name="Id" Type="Int64" Nullable="false" />
                    <Property Name="Name" Type="String" MaxLength="40" Unicode="false" FixedLength="false" />
                    <Property Name="AccNo" Type="String" MaxLength="20" Unicode="false" FixedLength="false" />
                    </EntityType>
                <EntityType Name="Trailer">
                    <Key>
                        <PropertyRef Name="Id" />
                    </Key>
                    <Property Type="Int64" Name="Id" Nullable="false" />
                    <Property Type="String" Name="Number" MaxLength="100" FixedLength="false" Unicode="false" />
                    <Property Type="String" Name="Customer_Id" Nullable="false" MaxLength="30" FixedLength="false" Unicode="false" />
                    </EntityType>
            </Schema>
        </edmx:ConceptualModels>
        <!-- C-S mapping content -->
        <edmx:Mappings>
            <Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2008/09/mapping/cs">
                <EntityContainerMapping StorageEntityContainer="SDModelsStoreContainer" CdmEntityContainer="SDContext">
                    <EntitySetMapping Name="Customers">
                        <EntityTypeMapping TypeName="DataAccess.SD.Customer">
                            <MappingFragment StoreEntitySet="CUSTOMER">
                                <ScalarProperty Name="Id" ColumnName="CUSTOMEROID" />
                                <ScalarProperty Name="Name" ColumnName="CUSTOMER_NAME" />
                                <ScalarProperty Name="AccNo" ColumnName="CUSTOMER_ACCOUNT" />
                                </MappingFragment>
                        </EntityTypeMapping>
                    </EntitySetMapping>
                    <EntitySetMapping Name="Trailers">
                        <EntityTypeMapping TypeName="DataAccess.SD.Trailer">
                            <MappingFragment StoreEntitySet="EQUIPMENT">
                                <ScalarProperty Name="Number" ColumnName="EQUIPMENT_ID" />
                                <ScalarProperty Name="Customer_Id" ColumnName="OWNER_ID" />
                                <ScalarProperty Name="Id" ColumnName="EQUIPMENTOID" />
                            </MappingFragment>
                        </EntityTypeMapping>
                    </EntitySetMapping>
                </EntityContainerMapping>
            </Mapping>
        </edmx:Mappings>
    </edmx:Runtime>
    <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
    <Designer xmlns="http://schemas.microsoft.com/ado/2008/10/edmx">
        <Connection>
            <DesignerInfoPropertySet>
                <DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
            </DesignerInfoPropertySet>
        </Connection>
        <Options>
            <DesignerInfoPropertySet>
                <DesignerProperty Name="ValidateOnBuild" Value="true" />
                <DesignerProperty Name="EnablePluralization" Value="True" />
                <DesignerProperty Name="IncludeForeignKeysInModel" Value="True" />
            </DesignerInfoPropertySet>
        </Options>
        <!-- Diagram content (shape and connector positions) -->
        <Diagrams>
            <Diagram Name="SD" ZoomLevel="100">
                <EntityTypeShape EntityType="DataAccess.SD.Customer" Width="1.75" PointX="0.75" PointY="0.75" Height="1.59568359375" IsExpanded="true" />
                <EntityTypeShape EntityType="DataAccess.SD.Trailer" Width="1.75" PointX="3.125" PointY="0.75" Height="1.59568359375" />
                <AssociationConnector Association="DataAccess.SD.CustomerTrailer">
                    <ConnectorPoint PointX="2.5" PointY="1.7064925130208335" />
                    <ConnectorPoint PointX="4" PointY="1.7064925130208335" />
                </AssociationConnector>
                <AssociationConnector Association="DataAccess.SD.CustomerTrailer">
                    <ConnectorPoint PointX="2.5" PointY="1.6439925130208335" />
                    <ConnectorPoint PointX="3.125" PointY="1.6439925130208335" />
                </AssociationConnector>
            </Diagram>
        </Diagrams>
    </Designer>
</edmx:Edmx>

What do I need to do exactly?

like image 489
sprocket12 Avatar asked Dec 20 '22 10:12

sprocket12


1 Answers

In the edmx designer you just need need to right click and choose Add New >> Association. Make sure you untick the "Add foreign key properties..." option, and select your required entities and navigation property names.

Then select the association and in the properties pane click into the "Referential Constraint" option - here you can set up which fields are involve in the association. You'll also want to set the correct multiplicity in the properties pane.

like image 113
Matt Whetton Avatar answered Jan 30 '23 23:01

Matt Whetton