从 KeyMembers 中获取身份字段

2024-02-25

我想得到KeyMembers我在 Edmx 中设置的位置StoreGeneratedPattern to Identity有没有办法做到这一点?

我可以使用以下代码获取 KeyMembers:

private static IEnumerable<EdmMember> GetKeyMembers(string entityName)
{
    var objectContext = EntityModel.ObjectContext;

    var metaData = objectContext
        .MetadataWorkspace
        .GetEntityContainer(objectContext.DefaultContainerName, DataSpace.CSpace)
        .BaseEntitySets
        .FirstOrDefault(x => x.ElementType.Name == entityName);

    return metaData.ElementType.KeyMembers;
}

我遇到的问题是它还返回外键,但我只想获取具有自动递增值的主键。


从给定的元数据工作区,我们打电话吧mw,我用这个:

var cSpaceEntities = mw.GetItems(DataSpace.CSpace).OfType<EntityType>();

foreach (var entity in cSpaceEntities) {
     var autoIds = entity.KeyMembers.Where(p => 
                        p.MetadataProperties
                            .Any(m =>    m.PropertyKind == PropertyKind.Extended 
                                  && Convert.ToString(m.Value) == "Identity")).ToArray();
            }

请测试

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 KeyMembers 中获取身份字段 的相关文章

随机推荐