c# - 包含自己模型类型列表的模型(递归建模?)

标签 c# asp.net-mvc dependencies

好吧,这可能是微不足道的,但我希望有人能给我一个直截了当的答案。假设您在一个 MVC 项目中有两个模型,一个模型包含另一个模型的列表。这两个模型看起来像这样:

public class Vehicle
{
    [Key]
    public int VehicleId { get; set; }

    public virtual List<Wheel> Wheels { get; set; }
}

public class Wheel
{
    [Key]
    public int WheelId { get; set; }

    [Required]
    public int VehicleId { get; set;}

    [Required]
    public virtual Vehicle { get; set; }
}

现在假设您有同样的东西,但只有一个模型。起初我以为它看起来像这样:

public class MyClass
{
    [Key]
    public int MyClassId { get; set; }

    public string MyData { get; set; }

    public virtual List<MyClass> MyClasses { get; set; }
}

这让我很反感,因为 MyClasses 被指定为导航属性。这意味着每个 MyClasses[i] 都必须有一个 MyClass 属性和另一个都引用父级 MyClass< 的 MyclassId/。想了一会儿,我开始头晕了。我这样做的方式正确吗?

最佳答案

使用您的 MyClass 实例:

public class Class
{
  [Key]
  public int ClassId { get; set; }
  public string Data { get; set; }
}

public class Classes
{
  public virtual List<Class> Classes { get; set; }
}

在你看来`@model.ViewModels.Classes。不会变得更容易,也不会让自己比想象中更头晕。

简而言之,不要进行循环引用,通过以不同方式命名一个类来打破循环,这样 View 中的模型就会知道要查找什么以及使用什么。当然,您可以与圈子一起工作。问题是维护它是一场噩梦。帮自己一个忙,让您的生活更轻松。

更新

public class MyClasses
{
  public List<Classes> OtherClasses;
}

希望这对您有所帮助。

关于c# - 包含自己模型类型列表的模型(递归建模?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150230/

相关文章:

javascript - knockout : Using select in foreach loop selects the same exact value in all selects

c# - ASP.NET MVC,添加 View : No model classes in dropdownlist

android - 检查 Android 应用程序中是否使用了库

java - 如何创建Maven依赖bat文件?

c# - TaskbarItemInfo.ProgressValue 未更新

asp.net-mvc - MVC : Override default ValidationMessage

c# - 如何使用 ImageFormatConverter.ConvertFromString 将包含 HTML 响应的字符串转换为图像?

haskell - 我如何知道黑客攻击的不一致该归咎于谁

c# - 引用没有强名称的程序集

c# - 如何将 powerpoint 幻灯片嵌入网页