如何獲取連接字符串中指定的當前登錄用戶的模式名稱?如何獲取當前數據庫用戶的默認模式名稱
我需要獲取模式名稱,因爲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()'從查詢中給出了默認的模式名稱。 –