我对EF有很好的了解,并成功生成了我的数据库。现在,我正在努力为其中一个实体类添加动态属性。例如,我有一Post
堂课,其他用户可以对帖子发表评论。当我列出现有帖子时,我想显示对相应帖子发表的评论数。
一种解决方案可能是拥有一个名为的属性CommentCount
,并在做出新评论时通过int
将该CommentCount
属性的()值增加1来更新Post 。
另一个解决方案(我认为是更好的解决方案)是,从数据库检索帖子时,可以同时计算和检索与该帖子关联的注释数,并将其分配给CommentCount
该帖子实例的属性。但是,我不知道如何使用EF实现这一目标。
强烈建议使用哪种方法?或者,还有其他方法可以做到这一点吗?如果是第二个,我如何使用EF来实现呢?
1)您应该只考虑不将调用的属性CommentCount
放入模型中。例如,在开发WPF Windows应用程序时,应考虑使用MVVM模式,该模式CommentCount
将属于ViewModel类而不属于Model类。在那里实现INotifyPropertyChanged
,您可以从前端Views中使用它。类似地,有ASP.NET等的MVC模式。
还有其他设计模式,例如存储库模式。使用此模式,您可以CommentCount
在存储库类而不是模型类中创建。这将类似于您的第二个解决方案。
2)从您的问题中我假设您正在使用代码优先方法:
成功生成我的数据库
如果这样做并且希望CommentCount
直接包含在Model类中,则可以通过将部分类文件添加到项目中来做到这一点,如下所示:
namespace DBModel.Models
{
public partial class Post
{
public int CommentsCount
{
get { return this.Comments.Count; }
}
...
但是我看不到为什么要为此在模型中创建额外的属性。
另一方面,将此字段作为计算字段添加到SQL数据库中可能很有意义,然后它将成为EF模型的一部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句