gpt4 book ai didi

c# - 如何从 Entity Framework 中获取架构名称?

转载 作者:行者123 更新时间:2023-11-30 16:16:16 26 4
gpt4 key购买 nike

我有以下代码

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 Framework 中获取 shemas 的名称。 (在我的数据库中,我有两个不同的 shemas。)也许有人知道另一种方式?

最佳答案

我的方法不对。下面的代码显示了我如何获得方案的名称。

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();
}
}

关于c# - 如何从 Entity Framework 中获取架构名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18587865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com