How to create a relationship between these two objects without touching the database?

I need to create a β€œvirtual” association between these two objects (1- *) so that I can cross them using linq , but the problem is that I cannot touch the database. I tried to manually edit edmx several times without success, getting various display 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> <!-- CS mapping content --> <edmx:Mappings> <Mapping Space="CS" 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 for sure?

+4
source share
1 answer

In the edmx designer, you just need to right-click and select "Add New β†’ Association." Make sure that you have disabled the option "Add foreign key parameters ..." and select the necessary objects and names of navigation properties.

Then select the association and in the properties panel click the "Link restriction" button - here you can configure which fields are associated with the association. You will also want to set the correct multiplicity in the property bar.

+9
source

All Articles