6

How can I map an entity framework model to multiple tables? How to perform insertion operation to specific table (by reference of string which stores the table name)?

2 Answers 2

6

I have not implemented this but a quick search provides many good examples of a practice known as Entity Splitting. The following should be useful:

http://www.c-sharpcorner.com/UploadFile/ff2f08/entity-splitting-in-entity-framework-6-code-first-approach/

public partial class Employee  
{  
   // These fields come from the “Employee” table  
   public int EmployeeId { get; set; }   
   public string Code { get; set; }  
   public string Name { get; set; }  

   // These fields come from the “EmployeeDetails” table  
   public string PhoneNumber { get; set; }  
   public string EmailAddress { get; set; }  
} 

public partial class Model : DbContext  
{  
   public Model() : base("name=EntityModel")  
   {  
      Database.Log = Console.WriteLine;  
   }  
   public virtual DbSet<Employee> Employees { get; set; }  

   protected override void OnModelCreating(DbModelBuilder modelBuilder)  
   {  
      modelBuilder.Entity<Employee>()  
      .Map(map =>  
      {  
          map.Properties(p => new  
          {  
             p.EmployeeId,  
             p.Name,  
             p.Code  
          });  
          map.ToTable("Employee");  
      })  
      // Map to the Users table  
      .Map(map =>  
      {  
          map.Properties(p => new  
          {  
             p.PhoneNumber,  
             p.EmailAddress  
          });  
          map.ToTable("EmployeeDetails");  
      });  
   }  
}

All credit for the above code goes to linked post

Sign up to request clarification or add additional context in comments.

3 Comments

Here we are mapping one entity to two different tables. But I need to make the table mapping dynamically. For example, Database contains schools details from different states. Details from each state should go to the particular state table. Here entity properties are same, but every time we may have to map different tables.
I know this has some time; but for others to know, maybe you have to use IModelCacheKeyFactory. Here's an article that uses dynamic tables: medium.com/@yanxiaodi/…
What is the equivalent of Map() in EF Core
1

In this case you can implement your own IModelCacheKeyFactory, which allow to hook into the model caching mechanism so EF is able to create different models based on some value right in runtime.

This article explains how

1 Comment

A link to a paid resource? rly?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.