给定EntityType,例如"Contact",如何从中派生出它所属的EntitySet的名称,即"Contacts"等多元化?
Nix*_*Nix 33
如果您已经有一个附加实体(显然您不需要第一行,只需使用您现有的实体):
Contact c = context.Contacts.Where(x => x.blah).FirstOrDefault();
string setName = c.EntityKey.EntitySetName;
Run Code Online (Sandbox Code Playgroud)
或者如果你不这样做:
string className = typeof(Contact).Name
var container =
context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
string setName = (from meta in container.BaseEntitySets
where meta.ElementType.Name == className
select meta.Name).First();
Run Code Online (Sandbox Code Playgroud)
此扩展可能很有用
public static class MyExtensions
{
public static string GetEntitySetName<T>(this ObjectContext context)
{
string className = typeof(T).Name;
var container = context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
string entitySetName = (from meta in container.BaseEntitySets
where meta.ElementType.Name == className
select meta.Name).First();
return entitySetName;
}
}
Run Code Online (Sandbox Code Playgroud)
并使用它像:
db.AttachTo(db.GetEntitySetName<MyEntityType>(), myEntityInstance);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16871 次 |
| 最近记录: |