Я не знаю, насколько это будет полезно, потому что это универсально, но вы можете сделать это:
public TEntity GetById<TEntity>(params Expression<Func<TEntity, bool>>[] keys) where TEntity : class
{
if (keys == null)
return default(TEntity);
var table = context.CreateObjectSet<TEntity>();
IQueryable<TEntity> query = null;
foreach (var item in keys)
{
if (query == null)
query = table.Where(item);
else
query = query.Where(item);
}
return query.FirstOrDefault();
}
и тогда вы могли бы назвать это так:
var result = this.GetById<MyEntity>(a => a.EntityProperty1 == 2, a => a.EntityProperty2 == DateTime.Now);
Отказ от ответственности: это на самом деле не GetByid, это действительно «позвольте мне дать вам пару параметров и дать мне первую сущность, которая соответствует». Но, как говорится, он использует дженерики и будет возвращать сущность, если есть совпадение, и вы будете искать на основе первичных ключей.