Gre*_*ern 14 entity-framework entity-framework-4.1
我在这里看到的答案是ObjectContext.使用DbContext时是否有确定实体主键名称的属性?
啊..其中一个我希望实体框架是开源的!我可以从.Find方法收集这个主键名称信息:-)
Lad*_*nka 26
你无法使用DbContext它--DbContext API只是愚蠢的包装器,只有最需要的功能.对于更复杂的一切,您必须转换DbContext回ObjectContext并使用它.尝试这样的事情:
提取键名称:
public static string[] GetEntityKeyNames<TEntity>(this DbContext context) where TEntity : class
{
if (context == null)
throw new ArgumentNullException("context");
var set = ((IObjectContextAdapter)context).ObjectContext.CreateObjectSet<TEntity>();
var entitySet = set.EntitySet;
return entitySet.ElementType.KeyMembers.Select(k => k.Name).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
这是一个提取实体键值的方法:
public static IEnumerable<object> GetEntityKeys<TEntity>(this DbContext context, TEntity entity)
where TEntity : class
{
if (context == null)
throw new NullReferenceException("context");
var type = typeof(TEntity);
var set = ((IObjectContextAdapter)context).ObjectContext.CreateObjectSet<TEntity>();
var entitySet = set.EntitySet;
var keys = entitySet.ElementType.KeyMembers;
var props = keys.Select(k => type.GetProperty(k.Name));
return props.Select(p => p.GetValue(entity));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8427 次 |
| 最近记录: |