如何在不触及数据库的情况下在这两个实体之间创建关联?

时间:2013-02-06 15:49:49

标签: entity-framework entity-framework-4 associations edmx

我需要在这两个实体(1- *)之间创建一个“虚拟”association,以便我可以使用linq遍历它们,但问题是我无法触及数据库。我试图多次手动编辑edmx但没有成功,导致各种映射错误。

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>

我需要做什么?

1 个答案:

答案 0 :(得分:10)

在edmx设计器中,您只需右键单击并选择Add New&gt;&gt;协会。确保取消选中“添加外键属性...”选项,然后选择所需的实体和导航属性名称。

然后选择关联,并在属性窗格中单击“参照约束”选项 - 您可以在此处设置关联中涉及的字段。您还需要在属性窗格中设置正确的多重性。