LINQ to SQL:检查通用存储库中是否存在通用实体
我有一个像这样的通用存储库
public class Repository<T> : IRepository<T> where T: class
{
DataContext _db;
public Repository()
{
_db = new DataContext("connection string");
}
System.Data.Linq.Table<T> GetTable
{
get { return _db.GetTable<T>(); }
}
public T GetBy(Func<T, bool> exp)
{
return GetTable.SingleOrDefault(exp);
}
....
}
是否可以向该存储库添加一个通用方法来检查是否存在任何实体:这样
public bool IsExisted(T entity)
{
...
}
可以很容易地将其写入
_productRepository.GetBy(p => p.Id == 5 // or whatever);
产品存储库之类的 任何存储库中这是:
public class ProductRepository : Repository<Product>
{
public ProductRepository()
: base()
{
}
}
我之所以这么做是因为我总是想检查一个实体是否存在,所以我不需要在所有存储库中编写相同的方法。
I have a generic repository as like that
public class Repository<T> : IRepository<T> where T: class
{
DataContext _db;
public Repository()
{
_db = new DataContext("connection string");
}
System.Data.Linq.Table<T> GetTable
{
get { return _db.GetTable<T>(); }
}
public T GetBy(Func<T, bool> exp)
{
return GetTable.SingleOrDefault(exp);
}
....
}
Is it possible to add a generic method to this repository to check for the existence of any entity like that:
public bool IsExisted(T entity)
{
...
}
it is easy to write it in any repository
_productRepository.GetBy(p => p.Id == 5 // or whatever);
where the productRepository like this:
public class ProductRepository : Repository<Product>
{
public ProductRepository()
: base()
{
}
}
I came to this since i always want to check for the existence of an entity alot, so i don't need to write the same method in all repositories.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
例如,如果您的所有实体都有一个属性 Guid Id,您可以为您的实体创建以下接口:
并将您的 Repository 类限制为它:
然后您可以在基本存储库中定义以下函数:
If all your entities have for example a property Guid Id you can create the following interface for your entities:
And restrict your Repository class to it:
You can then define the following function in your base repository: