1

Мне нужно получить значение maxlength, указанное для поля, используя Fluent API и Entity Framework 5 Code First.Как получить MaxLength из спецификации API API Fluent во время выполнения?

Я видел несколько примеров, использующих MetadataWorkspace, но не работает, когда вы используете Fluent API. Например, я попробовал этот код, но значение для MaxLenght всегда нуль:

ObjectContext.MetadataWorkspace.GetItem<GlobalItem>(typeof(TEntity).FullName, DataSpace.OSpace).MetadataProperties[field].TypeUsage.Facets["MaxLength"].Value 

Внутри Fluent файла конфигурации API У меня есть следующий код для необходимых свойств:

Property(t => t.Name).HasMaxLength(50); 

Я знаю, отображение работает, потому что если я попытаюсь сохранить объект с более чем 50 символами в этом поле, это не сработает.

мне просто нужно руководство для получения значения maxlenght но дать перспективу цели является:

  1. Создать новый объект Foo
  2. Получить значение MAXLENGTH определенное для панели свойств, используя Fluent API.
  3. Применить определенные правила на основе максимальной длины к строке, которая будет назначена Bar.
  4. Сохранить.

Заранее спасибо.

+0

Вы хотите, чтобы мы писали его для вас ??? –

+0

Это не обязательно, мне просто нужно руководствоваться тем, какую библиотеку я могу использовать для получения значения maxlength, код уже выполнен, за исключением этой части. Я просто отредактировал вопрос, чтобы было ясно. Благодарю. – Kakaroto

+0

'но это не работает, когда вы используете Fluent API.' что не работает? –

ответ

0

Следует использовать модель хранения. Проверьте документ в Enum DataSpace Используйте пункты EntityType.

[TestMethod] 
    public void EFToolsTest() { 

     var context = new BosMasterDbContext("MYDBCONTEXT"); 
     ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext; 
     MetadataWorkspace workspace = objContext.MetadataWorkspace; 

     var xyz = workspace.GetItems<EntityType>(DataSpace.SSpace); 
     foreach (var ET in xyz) { 
      foreach (var sp in ET.Properties) { 
       Debug.WriteLine(sp.Name + ":" + sp.MaxLength); 

       } 
      } 
     } 
+0

У меня может быть другая версия (с использованием EF 5.0), но я должен использовать (sp.TypeUsage.Facets.Contains («MaxLength»)? Sp.TypeUsage.Facets ["MaxLength"]. Значение: string.Empty), чтобы получить MaxLength. Компилятор не примет «sp.MaxLength». –

+0

Этот ответ проблематичен с будущим сущностной структуры, отбрасывающей контекст объекта. –

Смежные вопросы