无法在运行时使用IdeaBlade查找已更改的用户定义列

时间:2018-02-07 19:21:39

标签: devforce

我正在关注用户定义列的IdeaBlade教学单元,我创建了以下方法:

    public static IEnumerable<DataColumn> GetUnknownColumns(PersistenceManager pManager, Type pType)
    {
        PropertyDescriptorList.Reset(pType);
        var definedDescriptors = PropertyDescriptorList.Get(pType);
        pManager.Clear();
        pManager.InitializeSchema(pType);
        EntityTable uddTable = pManager.GetTable(pType);
        foreach (DataColumn col in uddTable.Columns)
        {
            PropertyDescriptor prop = definedDescriptors.Find(col.ColumnName);

            if (prop == null)
                yield return col;
        }
    }

注意:pType被假定为IdeaBlade.Persistence.Entity。 这段代码效果很好,除非我对pType在运行时指向的实体/表进行更改,否则此代码将不会获取新列。此外,如果我删除列,它仍会显示在uddTable.Columns中。我做错了什么?

修改 修正了一个拼写错误(经理 - > pManager)。 我也想出了这个问题,我正在修改表格pType指向sql,而不是通过PM,我相信这是导致问题的原因。我通过在InitializeSchema调用之前添加EntityTypeInfo.GetPrototypeTable(pType).IsSchemaInitialized = false;来修复它

0 个答案:

没有答案