如何在运行时从 Fluent API 映射规范获取 MaxLength



我需要首先使用 Fluent API 和实体框架 5 代码检索为字段指定的 maxlength 值。

我已经看过几个使用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 个字符的对象,它会失败。

我只需要获取最大值的指导,但为了给出一些观点,目标是:

  1. 创建新的 Foo 对象
  2. 使用 Fluent API 获取为 Bar 属性定义的最大长度值。
  3. 根据最大长度将某些规则应用于要分配给 Bar 的字符串。
  4. 救。

提前谢谢。

应使用存储模型。在枚举数据空间上检查文档使用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);
                }
            }
        }

最新更新