C# 如何处理MVC中不适合表数据的高级实体?

C# 如何处理MVC中不适合表数据的高级实体?,c#,asp.net-mvc,C#,Asp.net Mvc,假设我们有一个完全符合表的Person实体: public class Person { public int Id { get; set; } public int Type { get; set; } } 现在,用户有了一个类型,并且只有当用户是特定类型的时候,我才想知道那个人是什么类型的人。现在我只是在实体上添加额外的属性: public class Person { public int Id { get; set; } public int Type

假设我们有一个完全符合表的Person实体:

public class Person
{
    public int Id { get; set; }
    public int Type { get; set; }

}
现在,用户有了一个类型,并且只有当用户是特定类型的时候,我才想知道那个人是什么类型的人。现在我只是在实体上添加额外的属性:

public class Person
{
    public int Id { get; set; }
    public int Type { get; set; }
    public string TypeName { get; set; }

}
但我想让我的实体尽可能保持干净

我是否需要为这种情况创建单独的“高级实体”类,或者如何绕过这些情况


另外,我正在使用存储过程。

将该名称更改为关于某人的特定名称,无论您想跟踪某人的任何信息(头发颜色、眼睛颜色、国籍、大小),而不仅仅是简单的“类型”,这是C#中的系统基类。

是的。。。使用带有扩展属性的局部类别

您的问题不清楚,但我认为您将视图模型与实体混合在一起。如果要将用户“类型”存储到数据库中,则必须在实体中添加一个新字段(或使用分部类),或者如果首先使用数据库,则必须在表中添加该字段并刷新edmx。如果您不想将其存储在数据库中,只需创建一个视图模型并在我们的UI上使用它。

您想做什么?为什么向模型中添加一个额外的属性会使它变得不干净?这是一个简化的例子吗?期望的行为是什么?附加属性可以。只要确保它们的值在逻辑上是同步的。单个支持变量听起来是个不错的方法。例如,TypeName getter可以根据类型的基础值来决定。是否有特定版本的ASP.NET MVC作为目标?如果是,请包含该特定版本的标记。如果没有,则只包括未版本化的标记,
asp.net mvc
,正如我编辑您的问题所做的那样。不要使用
model view controller
,除非您对模式本身有疑问。如果您给出一个简短的示例,这可能会更好。