gpt4 book ai didi

c# - 存储库模式 : Method signature for Edit/Delete methods

转载 作者:行者123 更新时间:2023-11-30 15:09:04 24 4
gpt4 key购买 nike

我正在尝试自学存储库模式,并且我有一个最佳实践问题。

假设我有一个实体(这是一个 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; }
}

到目前为止,我的接口(interface)的抽象存储库是:

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 是一个人唯一的“不可编辑”(即关键)属性,您将如何实现它?

Edit 是否应该接受一个 Person 参数,然后 edit 方法代码查找具有提供的 id 的实体并以这种方式进行编辑?

delete 应该带一个 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 entity) 或一个Insert(T entity)Update(T entity) 取决于一点点钻研您的架构。

关于c# - 存储库模式 : Method signature for Edit/Delete methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4879469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com