c# - 如何获取当前数据库用户的默认架构名称

标签 c# sql-server entity-framework asp.net-mvc-4

如何获取连接字符串中指定的当前登录用户的架构名称?

我需要获取架构名称,因为 WebSecurity.InitializeSimpleMembership 使用当前登录用户的默认架构创建表。我需要将自定义 UserProfile 实体映射到创建的简单成员资格的用户配置文件。我不想重新创建简单的成员(member) POCO。我只想分配自定义 UserProfile 实体的默认架构以匹配简单成员资格默认架构。

最佳答案

您可以尝试如下所示。这只是一个标准代码片段,您可以在其中获取连接字符串的架构详细信息。

using (var context = new MyContext())
{

    //retrieve object model
    ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;

    //retrieve name types
    var nameTypes = objContext.MetadataWorkspace.GetItems<EntityType>(DataSpace.OSpace);

    //set a connection String 
    var connectionString = objContext.Connection.ConnectionString;
    var connection = new EntityConnection(connectionString);
    var workspace = connection.GetMetadataWorkspace();

    var entitySets = workspace.GetItems<EntityContainer>(DataSpace.SSpace).First().BaseEntitySets;

    for (int i = 0; i < nameTypes.Count; i++)
    {
        Type type = Type.GetType(nameTypes[i].FullName);
        string schema = entitySets[type.Name].MetadataProperties["Schema"].Value.ToString();   
    }
}

关于c# - 如何获取当前数据库用户的默认架构名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39826034/

相关文章:

sql-server - CDC fn_cdc_get_all_changes_dbo_ 错误 313 "An insufficient number of arguments..."

sql - 如何将特定查询返回的所有数据存储在 SQL Server 2005/2008 中的单个字符串中的表中

c# - Linq 中的相关子查询

C#秒表类

c# - DeleteFiles 任务从匹配列表中排除单个文件

c# - 当我将鼠标悬停在组合框项目上时引发事件

c# - 在 Winforms 的标签上使用自定义字体

java - 查看加密的数据库数据

c# - Entity Framework 4.1 Code First EDMX 问题

c# - 更新 Entity Framework 时出现错误