我可以在模型中添加虚拟对象吗?

时间:2016-10-25 23:13:19

标签: c# asp.net-mvc linq

ID   | Parent | Name
-----------------------------------------
1    | 0      | a
2    | 0      | b
3    | 2      | c
 [Table("Cats")]
    public class CategoriesModel
    {
        [Key]
        public int Id { get; set; }
        public int? Parent { get; set; }
        public string Name { get; set; }
        public int IsDr { get; set; }
        public virtual Submenu HasSubmenu { get; set; }
        public virtual CategoriesModel ParentMdl { get; set; }
        public virtual ICollection<CategoriesModel> ChildrenMdl { get; set; }
    }
// My virtual class
    public partial class Submenu
    {
        public virtual int ID { get; set; }
        public virtual bool Has { get; set; }
        public virtual CategoriesModel Parent { get; set; }
        public virtual ICollection<CategoriesModel> ChildrenMdl { get; set; }
    }

当一行没有孩子时(意味着没有行像其他ID那样

示例: ID 没有。 1 没有任何子女,因此子菜单。有应为 false !!

我不知道我该怎么做,以及在哪做! 子菜单不是我的表格的一部分,它是虚拟的

能做到吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么Has应该返回......

  • true - 如果ChildrenMdl有一个或多个元素;
  • false - 如果ChildrenMdl没有元素(或者甚至可能为空)。

这可以通过以下方式实现:

using System.Linq;

public partial class Submenu
{
    // ...
    public bool Has
    {
        get { return ChildrenMdl != null && ChildrenMdl.Any(); }
    }
    // ...
}

该属性没有set { ... },它根本就没有意义。

我还删除了virtual关键字。仅当您希望允许子类覆盖属性的实现时才使用virtual。如果在不需要时使用,则会使代码运行得稍慢。