好吧,这可能是微不足道的,但我希望有人能给我一个直截了当的答案。假设您在一个 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/