Split Entity mapping producing unexpected results

2019-09-19 01:47发布

问题:

i am currently using the following mapping to map a split entity and is producing unexpeted results it is trying to map a table

public class TestResultMap : EntityTypeConfiguration {

public TestResultMap()
{
    #region Property => Column Mapping 




    //test table
    Property(e => e.Id)
        .HasColumnName("TEST_NUMBER");

    Property(e => e.Analysis)
        .HasColumnName("ANALYSIS");

    Property(e => e.ComponentList)
        .HasColumnName("COMPONENT_LIST");

    Property(e => e.Status)
        .HasColumnName("STATUS");

    //result table
    Property(e => e.Maximum)
        .HasColumnName("MAXIMUM");

    Property(e => e.Minimum)
        .HasColumnName("MINIMUM");

    Property(e => e.OutOfRange)
        .HasColumnName("OUT_OF_RANGE");

    Property(e => e.Name)
        .HasColumnName("NAME");

    Property(e => e.Text)
        .HasColumnName("TEXT");

    Property(e => e.Typical)
        .HasColumnName("TYPICAL");

    Property(e => e.Units)
        .HasColumnName("UNITS"); 



    #endregion
    #region Split Entity Mapping 
    Map(m =>
            {
                m.Properties(t => new
                {
                    t.Id,
                    t.ComponentList,
                    t.Analysis,
                    t.Status
                });
                m.ToTable("TEST", Settings.Default.DbSchema);
            });
            Map(m =>
            {
                m.Properties(t => new
                {
                    t.Name,
                    t.Text,
                    t.Units,
                    t.OutOfRange,
                    t.Minimum,
                    t.Maximum
                });



                m.ToTable("RESULT", Settings.Default.DbSchema);
            }); 




    #endregion
    #region Key & Relationship Mapping
    HasKey(e => e.Id);


    #endregion
}

}

which is producing the following sql

-       TestResults {SELECT 

    1 AS "C1", 
     CAST( "Extent1"."TEST_NUMBER" AS number(9,0)) AS "C2", 
    "Extent2"."STATUS" AS "STATUS", 
    "Extent2"."ANALYSIS" AS "ANALYSIS", 
    "Extent2"."COMPONENT_LIST" AS "COMPONENT_LIST", 
    "Extent3"."NAME" AS "NAME", 
    "Extent3"."TEXT" AS "TEXT", 
    "Extent3"."UNITS" AS "UNITS", 
    "Extent3"."OUT_OF_RANGE" AS "OUT_OF_RANGE", 
    "Extent3"."MINIMUM" AS "MINIMUM", 
    "Extent3"."MAXIMUM" AS "MAXIMUM", 
    "Extent1"."TYPICAL" AS "TYPICAL", 
     CAST( "Extent2"."TestedSample_Id" AS number(9,0)) AS "C3", 
    "Extent2"."InstrumentUsed_Identifier" AS "InstrumentUsed_Identifier"
    FROM   "dbo"."TestResult11" "Extent1"
    INNER JOIN "SM2011"."TEST" "Extent2" ON ( CAST( "Extent1"."TEST_NUMBER" AS number(9,0))) = ( CAST( "Extent2"."TEST_NUMBER" AS number(9,0)))
    INNER JOIN "SM2011"."RESULT" "Extent3" ON ( CAST( "Extent1"."TEST_NUMBER" AS number(9,0))) = ( CAST( "Extent3"."TEST_NUMBER" AS number(9,0)))}  System.Linq.IQueryable<Lanxess.Data.Models.TestResult> {System.Data.Entity.Infrastructure.DbQuery<Lanxess.Data.Models.TestResult>}

and throwing an error that the table for TestResult11 doesnt exist which i would expect because it doesnt exist in fact its trying to use dbo mssql schema and i am using oracle database the rest of my mappings work fine and mapping to the correct columns schemas and tables its just this one that is giving me the problem

do i need to add additional mapping to acheive this with oracle or am i mapping this wrong

回答1:

Closing as problem was it was not a 1:1 relationship after all was caused by multiple records appearing in the mapping causing an exception