可以在存储库中存储非持久性逻辑

时间:2011-01-12 12:55:05

标签: repository


我有一个这样的课程

public class Obj : IEntity
{
    public virtual int ID { get; set; }
    public virtual string Value { get; set; }
}

我需要实现一种方法 1.如果数据库中不存在具有给定值的Obj,则创建这样的Obj
2.如果DB中有多个具有相同值的Obj,则抛出异常
3.返回给定值的Obj(现在我确定只有一个这样的对象) 问题是 - 我应该把这个方法放在哪里。 ObjRepository适合它吗?
比你提前!

1 个答案:

答案 0 :(得分:1)

我认为这更像是一个商业规则,而不是存储库中的内容。

对象理想情况下应该做一件事(或几件事但在同一抽象层次上)。处理数据库更新/读取/删除已经是一回事(并且很重要:))。

所以我建议添加第三个对象(例如ObjService)来处理这些业务场景。

请注意,上下文(一如既往)是王道。如果这是一个原型或者你希望快速出现的东西,那么将逻辑放在存储库上然后在时机成熟时将其重构为服务是没有问题的。