所以我有一个数据访问类库
我给实体调用了一个linq
我最后得到一个包含TableData对象的行。
我应该从类库方法返回什么内容?
我认为返回TableData对象会很酷,但我看到如果你对它进行了更改并调用了一个实际更新数据库的保存,我不想在我的类库之外。
人们通常将什么作为结果对象返回?
答案 0 :(得分:2)
如果您尝试遵循n层架构,我的建议是使用自我跟踪实体T4模板。
然后,您的模型将是您希望从存储库返回的模型,并且当您想要将它们保存回数据库时,将跟踪您对实体所做的更改。
答案 1 :(得分:1)
如果将EF跟踪对象的状态设置为Detached
,则更改将不会传播到数据库。
答案 2 :(得分:0)
这是一个很好的问题,因为它确实指出了关注的分离。一方面,您希望将“本机”数据返回进行检查或其他任何内容。但另一方面,你可能不希望所有的“实时数据包裹”。
我认为这是数据传输对象可以发挥作用的地方。我甚至为定义具有只读属性的DTO的接口做了很多。 “我得到的回报”是由我要求的 - IDTO,DTO或Entity-with-logic定义的,因为某些业务层对象可以使用DTO。
我不使用EF,但在我们自己的ORM-ish DAL中,这正是它的工作方式 - 工厂和服务是通用的,并返回您要求的内容。不想担心编辑?询问没有任何可写属性的接口。