我在这里找到了一种方法来阅读 MetadataWorkspace 。试图阅读特定领域MaxLength。它运作良好。 但是,无法将其更改为可以调用的方法,问题是:
ORDER BY
返回完整的实体,我必须知道所需的索引号,我不能使用该名称!。
var tables = workspace.GetItems<EntityType>(DataSpace.SSpace);
我怎样才能重写这个:
var ET = tables[4].Properties[propertyName].MaxLength;
这是我的完整方法:
var ET = tables[entityName].Properties[propertyName].MaxLength;
请怎么做。
[编辑]
向Ivan Stoev求助。我搬到了EF Core,代码变得更短了。我想帮助别人,就是这样:
public int GetMaxLenth(string entityName, string propertyName)
{
var context = new CmsDbContext();
ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
MetadataWorkspace workspace = objContext.MetadataWorkspace;
var tables = workspace.GetItems<EntityType>(DataSpace.SSpace);
var ET = tables[4].Properties[propertyName].MaxLength;
return ET.Value;
}
它有三个段落:
关心所有人。
答案 0 :(得分:1)
没有确切的预定义方法。最接近的是MetadataWorkspace.GetType,但除了实体名称之外,它还需要名称空间名称。因此,您必须采用一些传统方法,例如LINQ First
:
// ...
var table = tables.First(type => type.Name == entityName);
var ET = table.Properties[propertyName].MaxLength;
// ...