问题
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
来源:https://stackoverflow.com/questions/6765670/split-entity-mapping-producing-unexpected-results-with-oracle-database