0

我目前正在使用以下映射来映射拆分实体并产生意外结果它正在尝试映射表

公共类 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 来实现这一点,还是我映射这个错误

4

1 回答 1

0

关闭问题是它不是 1:1 关系毕竟是由映射中出现的多个记录导致异常引起的

于 2011-08-03T05:33:28.993 回答