从MetadataWorkspace读取MaxLength

时间:2016-05-25 11:49:10

标签: c# entity-framework

我在这里找到了一种方法来阅读 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;
}

它有三个段落:

  1. DbContext的名称。
  2. 表名。
  3. 字段名称
  4. 关心所有人。

1 个答案:

答案 0 :(得分:1)

没有确切的预定义方法。最接近的是MetadataWorkspace.GetType,但除了实体名称之外,它还需要名称空间名称。因此,您必须采用一些传统方法,例如LINQ First

// ...
var table = tables.First(type => type.Name == entityName);
var ET = table.Properties[propertyName].MaxLength;
// ...