如何获取连接字符串中指定的当前登录用户的模式名称?如何获取当前数据库用户的默认模式名称
我需要获取模式名称,因为WebSecurity.InitializeSimpleMembership使用当前登录用户的默认模式创建表。我需要将我的自定义UserProfile实体映射到创建的简单成员的用户配置文件。我不想重新创建简单的会员POCO。我只想分配我的自定义UserProfile实体的默认模式以匹配简单成员默认模式。
如何获取连接字符串中指定的当前登录用户的模式名称?如何获取当前数据库用户的默认模式名称
我需要获取模式名称,因为WebSecurity.InitializeSimpleMembership使用当前登录用户的默认模式创建表。我需要将我的自定义UserProfile实体映射到创建的简单成员的用户配置文件。我不想重新创建简单的会员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();
}
}
我使用select schema_name()
这会给我在连接字符串中声明的用户的默认模式。然后使用结果在其模型构建器中设置实体模式。
不知道我知道你在问什么,但'select schema_name()'从查询中给出了默认的模式名称。 –