c#-存储库模式:编辑/删除方法的方法签名
作者:互联网
我正在尝试自学存储库模式,并且有一个最佳实践问题.
想象一下我有一个实体(这是一个linq to sql实体,但是为了清楚起见,我删除了所有linq to sql代码和数据注释属性):
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public string Telephone { get; set; }
}
到目前为止,我的界面的抽象仓库是:
public interface IPersonRepository
{
IQueryable<Person> Person { get; }
void Add(Person person);
void SubmitChanges();
// I want an Edit method here
// I want a Delete method here
}
我的问题是:编辑/删除方法的方法签名是什么?这些最佳做法是什么?例如,如果ID是Person的唯一“不可编辑”(即键)属性,您将如何实现?
Edit是否应该采用Person参数,然后edit方法代码使用提供的ID查找实体并以这种方式进行编辑?
应该删除带一个Person参数,还是一个id?
我试图思考这样做是最合乎逻辑,最明确的方法,但是我很困惑,所以我想问一问!
谢谢!
解决方法:
我一般都将它们(实体和ID)都删除:
void Delete(Person person);
void DeleteById(int personId);
另一种是在实体上进行保存:
void Save(Person person);
您可能还考虑为标准CRUD操作创建通用的基础存储库:
public interface IBaseRepository<T>
{
T GetById(Guid id);
IList<T> GetAll();
void Delete(T entity);
void DeleteById(Guid id);
void Save(T entity);
}
如果只需要Save(T实体)或Insert(T实体)和Update(T实体),则取决于您的体系结构.
标签:repository-pattern,c 来源: https://codeday.me/bug/20191023/1913769.html