Reputation: 4914
Is there a way to get table info defined with DbModelBuilder?
something like:
entity.GetType().GetTableName()
Max
EDIT:
id like to implement following
public static class Helper
{
public string GetTableName(Type type) {
// ??
}
}
now i'd like to get table name by type
var type = someEntity.getType();
var sql = "delete from " + Helper.GetTableName(type) + " where id in (...)"
Upvotes: 3
Views: 1409
Reputation: 4914
Only solution i can imagine is reflection. Here it is
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// model mappings
base.OnModelCreating(modelBuilder);
// table mapping
var config = modelBuilder.Configurations
.GetPrivateFieldValue("_modelConfiguration")
.GetPrivateFieldValue("ActiveEntityConfigurations");
var mapping = new Hashtable();
foreach (var c in (IEnumerable)config)
{
var type = (Type)c.GetPrivateFieldValue("ClrType");
var tableName = (string)c.GetPrivateFieldValue("EntitySetName");
mapping[type] = tableName;
}
// store mapping whereever needed
}
Main idea is to get configuration object after base.OnModelCreating has called.
Upvotes: 1