我试图从我的数据库中获取多个搜索外键的结果(至少在这种情况下),而不是主键。例如,我有一个用户,这个用户有很多标识。用户显然是独一无二的,而他可以在他下面有多个标识。使用通用存储库模式,我不知道如何搜索不是主键的密钥,在这种情况下是外键。这是我的通用存储库:
public class GenericRepository<T1, T2>:IGenericRepository<T1>
where T1 : class
where T2: class
{
private Data.Entities db = null;
private DbSet<T2> table = null;
public GenericRepository()
{
this.db = new Data.Entities();
table = db.Set<T2>();
}
public GenericRepository(Entities db)
{
this.db = db;
table = db.Set<T2>();
}
public IQueryable<T1> SelectAll()
{
return table.ToList().AsQueryable().Select(x => Mapper.Map<T2, T1>(x));
}
public T1 SelectByID(object id)
{
return Mapper.Map<T2, T1>(table.Find(id));
}
public void Insert(T1 obj)
{
T2 item = Mapper.Map<T1, T2>(obj);
table.Add(item);
}
public void Update(T1 obj)
{
T2 item = Mapper.Map<T1, T2>(obj);
table.Attach(item);
db.Entry(item).State = EntityState.Modified;
}
public void Delete(object id)
{
T2 existing = table.Find(id);
table.Remove(existing);
}
public void Save()
{
db.SaveChanges();
}
在这种情况下,我使用AutoMapper将我的实体映射到ViewModels和Vice Versa。不过,我基本上需要创建一个SelectAllByForeignKey()或者其他东西,但我绝对不知道如何在通用模式中执行此操作。任何想法都会很棒。