从KeyMembers中获取身份字段

Ran*_*dom 2 c# identity entity-framework identity-column

我想获得的KeyMembers,我在EDMX设置了StoreGeneratedPatternIdentity是有办法做到这一点?

我可以使用以下代码获取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;
}
Run Code Online (Sandbox Code Playgroud)

我有这个问题,它也返回外键,但我只想让PrimaryKeys具有自动递增值.

Geo*_*rge 6

从给定的MetadataWorkspace,让我们调用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();
            }
Run Code Online (Sandbox Code Playgroud)

请测试