如何获取连接字符串中声明的当前登录用户的模式名称?
我需要获取模式名称,因为WebSecurity.InitializeSimpleMembership使用当前登录用户的默认模式创建表。我需要将我的自定义UserProfile实体映射到创建的简单成员资格的用户配置文件。我不想重新创建简单的会员POCO。我只想分配自定义UserProfile实体的默认架构以匹配简单成员身份默认架构。
答案 0 :(得分:1)
您可以尝试如下所示。这只是一个标准的代码段,您可以在其中获取连接字符串的架构详细信息。
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();
}
}
答案 1 :(得分:0)
我使用select schema_name()
这将为我提供连接字符串中所述用户的默认架构。然后使用结果在其模型构建器中设置实体模式。