Bạn không thể sử dụng DbContext
cho điều đó - DbContext API chỉ là trình bao bọc câm chỉ với chức năng cần thiết nhất. Đối với mọi thứ phức tạp hơn, bạn phải chuyển đổi DbContext
trở lại ObjectContext
và sử dụng nó. Hãy thử một cái gì đó như thế này:
Extract tên chính:
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();
}
Dưới đây là một phương pháp cho phép trích xuất các giá trị chính của một thực thể:
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));
}
Nguồn
2011-08-02 07:57:14
Bạn có thể xem mã nguồn tại http://entityframework.codeplex.com/ – VahidNaderi