mapping multiple tables to a single entity class in entity framework

asp.net-mvc-3, c#, c#-4.0, entity-framework, entity-framework-4.1

Solution

You can use Entity Splitting to achieve this if you have the same primary key in both tables.

  modelBuilder.Entity<TestResult>()
    .Map(m =>
      {
        m.Properties(t => new { t.Name, t.Text, t.Units /*other props*/ });
        m.ToTable("Result");
      })
    .Map(m =>
      {
        m.Properties(t => new { t.Status, t.Analysis /*other props*/});
        m.ToTable("Test");
      });

Here's a useful article

Problem

I am working on a legacy database that has 2 tables that have a 1:1 relationship. Currently, I have one type (1Test:1Result) for each of these tables defined I would like to merge these particular tables into a single class. The current types look like this ``` public class Result { public string Id { get; set; } public string Name { get; set; } public string Text { get; set; } public string Units { get; set; } public bool OutOfRange { get; set; } public string Status { get; set; } public string Minimum { get; set; } public string Maximum { get; set; } public virtual Instrument InstrumentUsed { get; set; } public virtual Test ForTest { get; set; } } public class Test { public int Id { get; set; } public string Status { get; set; } public string Analysis { get; set; } public string ComponentList { get; set; } public virtual Sample ForSample { get; set; } public virtual Result TestResult { get; set; } } ``` I would prefer them to look like this ``` public class TestResult { public int Id { get; set; } public string Status { get; set; } public string Analysis { get; set; } public string ComponentList { get; set; } public string TestName { get; set; } public string Text { get; set; } public string Units { get; set; } public bool OutOfRange { get; set; } public string Status { get; set; } public string Minimum { get; set; } public string Maximum { get; set; } public virtual Instrument InstrumentUsed { get; set; } } ``` I am currently using the fluent API for mapping these to our legacy Oracle database. What would be the best method of combining these into a single class? Please note that this is a legacy database. Changing the tables is not an option and creating views is not a viable solution at this point in the project.

Original source