拆分实体映射使用oracle数据库产生意外结果

时间:2011-07-20 17:04:07

标签: oracle entity-framework asp.net-mvc-3 entity-framework-4.1 odac

我目前正在使用以下映射来映射拆分实体,并且正在尝试映射表格时产生无法解决的结果

公共类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实现此功能,或者我映射此错误

1 个答案:

答案 0 :(得分:0)

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