Split Entity mapping дает неожиданные результаты с базой данных oracle - PullRequest
0 голосов
/ 20 июля 2011

В настоящее время я использую следующее сопоставление для сопоставления разделенной сущности и выдает непредвиденные результаты. Она пытается сопоставить таблицу

открытый класс 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
}

}

, который производит следующий 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>}

и выдает ошибку, что таблица для TestResult11 не существует, чего я и ожидал, потому что на самом деле не существует ее попытки использовать схему dbo mssql и яя использую базу данных oracle, остальные мои сопоставления работают нормально и отображаются на правильные схемы столбцов и таблицы. Именно эта проблема вызывает у меня

мне нужно добавить дополнительное сопоставление, чтобы добиться этого с помощью oracle или amя отображаю это неправильно

1 Ответ

0 голосов
/ 03 августа 2011

Закрытие, поскольку проблема заключалась в том, что это не было отношением 1: 1, поскольку все они были вызваны несколькими записями, отображающимися в отображении, что вызывало исключение

...