Core Data 逻辑分布?

Posted

技术标签:

【中文标题】Core Data 逻辑分布?【英文标题】:Core Data logic distribution? 【发布时间】:2012-07-18 03:50:09 【问题描述】:

我使用 Core Data 已经有一段时间了,但我只是问自己一个问题,我自己总是倾向于创建某种本地存储类来管理 Core Data 模型,这将是一个单例类有对托管对象上下文的引用,我有创建新托管对象、删除对象、保存等的方法... 而且我的托管对象子类实际上只是模型。

但我也经常与其他人的项目一起工作,有时其他开发人员倾向于以类方法的形式向托管对象子类添加更多逻辑,并且有一个非常简单或有时没有核心数据“包装器”类全部。

例如,我通常会这样做:

User *me = [[MyDataStore getInstance] createUserWithName:@"Daniel"];

而其他人却有:

User *me = [User userWithName:@"Daniel"];

显然后者更好,并且在我看来更人性化,但最终可能会产生很多零散的代码,但另一方面,我的解决方案意味着您有一个非常大的文件,一旦它就不是很好超过一定长度。

我想知道其他人是否可以分享他们对此的看法。谢谢。

【问题讨论】:

【参考方案1】:

从 MVC 的角度来看,将逻辑代码放在 NSManagedObject 子类中是更正确的做法。就个人而言,我觉得这样做更合乎逻辑,即这段代码创建了一个新的 User 实例,所以我将它放在 User 类中。

在实际层面上,我曾经讨厌将逻辑代码放在我的 NSManagedObject 子类中,因为如果我修改了我的模型,它会全部消失,但是我现在使用 MoGenerator 来处理所有这些,我不必担心关于我的自定义逻辑被覆盖。

最近我倾向于尝试和利用 CoreData 的另一件事是抽象实体。它们不仅非常适合简化您的模型,还可以简化您的自定义逻辑,我的意思是它基本上只是围绕 CoreData 进行子类化。

只是我的意见以及目前对我有用的方法, 希望它可以帮助某人,期待任何其他贡献!

【讨论】:

自定义代码被生成的类替换的问题可以通过将自定义代码放在单独的 Objective C 类别中来避免。 类别听起来很有趣。感谢您的想法 Steffan,如果我们在 twitter 或其他地方分享这个问题,也许我们可以得到更多的意见,我真的认为这是一个有趣的问题。 厌倦了等待更多的意见,他们不会来......你还不如获得声誉

以上是关于Core Data 逻辑分布?的主要内容,如果未能解决你的问题,请参考以下文章

插入时不调用 Core Data 的自定义验证方法

[EF Core]数据迁移

MVC5 网站开发之四 业务逻辑层的架构和基本功能

net core 中间件和管道

将 Core Data 中的一对多显示为一对一

如何在.net core mvc中使用ModelState包装类分离业务逻辑层