编程语言
首页 > 编程语言> > c#-存储库模式:编辑/删除方法的方法签名

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