【发布时间】:2016-12-09 21:10:47
【问题描述】:
我正在尝试实现一个通用存储库模式,该模式在 IEnumerable 中实现通用项目的 CRUD 操作。我遇到了一般查找可能已经在 IEnumerable 中的项目的问题。我需要以编程方式传递构成“键”或不同记录的属性,然后使用 LINQ 对定义的属性执行 Enumerable.Any(),以便查看该对象是否已存在于 IEnumberable 中。到目前为止,这是我的代码。
//Generic Method
public void AddItem(TEntity item)
{
var entities = GetAllItems().ToList(); //Method gets cached IEnumerable<TEntity>
if(true)//Generically see if TEntity is already in the list based of defined properties
{
entities.Add(item);
}
}
//Same function but non-generic
private void AddItem(MyObject object)
{
var objects = GetAllItems().ToList(); //Method gets cached IEnumerable<MyObject>
if(!objects.Any(a=> a.ID == MyObject.ID ))
{
objects.Add(object);
_cache.AddReplaceCache(objects);
}
}
注意:键可以是对象 MyObject 上的任何一个或多个属性
【问题讨论】:
-
似乎这应该是在此之上执行的检查。我只是让重复密钥问题在数据库级别失败,因为它不应该进入存储库。再说一次,我不会使用通用存储库。
标签: c# linq generics reflection