从KeyMembers中获取身份字段

KeyMembers我在KeyMembers中设置的KeyGembers StoreGeneratedPatternIdentity有没有办法做到这一点?

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

 private static IEnumerable 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; } 

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

从给定的MetadataWorkspace ,让我们调用mw ,我使用:

 var cSpaceEntities = mw.GetItems(DataSpace.CSpace).OfType(); 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(); } 

请测试

存储生成的模式位于EF模型的SSDL内容中。 以下是如何使用标识规范获取属性的示例:

 var items = oc.MetadataWorkspace.GetItems(DataSpace.SSpace).OfType(); foreach (var entityType in items) { var props = string.Join(",", entityType.Properties .Where(x => x.IsStoreGeneratedIdentity)); Trace.WriteLine(string.Format("{0}: {1}", entityType.Name, props)); } 

(其中ocObjectContext