Dynamic table name with entity framework

后端 未结 3 621
花落未央
花落未央 2020-12-29 06:42

I have many tables with the same model structure but with other table names with other data (in this case will be ~100 tables). I want to dynamically switch table name in ru

相关标签:
3条回答
  • 2020-12-29 07:04

    You can do this:

            // Gets entity type from specified namespace/assembly
            Type entityType = Type.GetType(string.Format("Your.NameSpace.{0},{1}", entityName, "Assembly.Name"));
            // Finds item to update based on its primary key value
            var entity = _dbContext.Find(entityType, entityKey);
            // Finds column to update preference for
            PropertyInfo propertyInfo = entity.GetType().GetProperty(entityField);
            // Set and update (date example given)
            propertyInfo.SetValue(entity, isOptIn ? (DateTime?)null : (DateTimeOffset?)DateTime.Now, null);
            _dbContext.SaveChanges();
    
    0 讨论(0)
  • 2020-12-29 07:09

    I did something like this. http://nodogmablog.bryanhogan.net/2013/08/entity-framework-in-an-dynamics-nav-navision-envirnoment/

    I had tables which were identical, but they had different names. For example, a customer table but with different prefixes for different companies.

    [ACME$Customer] 
    [SuperCorp$Customer]
    

    I ended up using dynamic compilation. It's a pretty detailed blog post so I won't go into it here.

    0 讨论(0)
  • 2020-12-29 07:24

    Do you want to do like this?

    foreach (string tableName in new[] { "Table1", "Table2" })
    {
       var result = dbContext.Database.SqlQuery<SpecificModel>(string.Format("SELECT * FROM {0} WHERE ID=@p0", tableName), 1).FirstOrDefault();
    }
    
    0 讨论(0)
提交回复
热议问题