isxaker
@isxaker

Получить название схемы для каждого entity объекта?

У меня есть следующий код
using (WdmEntities context = new WdmEntities())
{
    //get object models from context
    ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
    var container = objContext.MetadataWorkspace.GetEntityContainer(objContext.DefaultContainerName, DataSpace.CSpace);
    List<string> schemas = new List<string>();
    foreach (var set in container.BaseEntitySets)
    {
        foreach (var metaproperty in set.MetadataProperties)
        {
            //here 
            if(metaproperty.Name == "Schema")
            {
                //but metaproperty.Value == NULL
                schemas.Add(metaproperty.Value);
            }
        }
    }
}

Я хочу получить навзание схехы БД для каждого entity объекта. Вместо этого получаю null значения. Подскажите, что не так делаю или любой другой способ.
  • Вопрос задан
  • 2901 просмотр
Решения вопроса 1
isxaker
@isxaker Автор вопроса
Вот так я сумел получить название схемы

using (WdmEntities context = new WdmEntities())
{
    //get object models from context
    ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
    //get all full names types from object model
    var fullNameTypes = objContext.MetadataWorkspace.GetItems<EntityType>(DataSpace.OSpace);
    ///////////////////
    var conStr = objContext.Connection.ConnectionString;
    var connection = new EntityConnection(conStr);
    var workspace = connection.GetMetadataWorkspace();

    var entitySets = workspace.GetItems<EntityContainer>(DataSpace.SSpace).First().BaseEntitySets;
                
    for (int i = 0; i < fullNameTypes.Count; i++)
    {
        Type type = Type.GetType(fullNameTypes[i].FullName);
        string schema = entitySets[type.Name].MetadataProperties["Schema"].Value.ToString();   
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mayorovp
Схемы БД лежат не в CSpace, а в SSpace.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы