C# 类枚举对象';ASP.NETMVC中的s(Person)状态字段类

C# 类枚举对象';ASP.NETMVC中的s(Person)状态字段类,c#,sql,asp.net-mvc,database,localdb,C#,Sql,Asp.net Mvc,Database,Localdb,我想创建类Person,它将具有int Id;字符串名等。但有一件事我不知道如何解决 我会给每个人打电话,打完电话后,我想为通话结果设置状态,我只想要这些状态:“成功”,“不想说话”,“稍后再打”,没有拿起电话,这些都没有了。当然,类Person的所有对象都将在LocalDb数据库中 据我记忆所及,它在数据库中被称为字典实体 我应该如何在C#一个类,两个类中创建它?有没有办法解决这个问题,只添加可能的值 我不知道实体框架是否处理枚举。有人能写一个简单的个人样本和这个枚举类型,哪个实体框架能理解它

我想创建
类Person
,它将具有
int Id;字符串名
等。但有一件事我不知道如何解决

我会给每个人打电话,打完电话后,我想为通话结果设置状态,我只想要这些状态:
“成功”
“不想说话”
“稍后再打”
没有拿起电话
,这些都没有了。当然,
类Person
的所有对象都将在LocalDb数据库中

据我记忆所及,它在数据库中被称为字典实体

我应该如何在
C#
一个类,两个类中创建它?有没有办法解决这个问题,只添加可能的值


我不知道实体框架是否处理枚举。有人能写一个简单的个人样本和这个枚举类型,哪个实体框架能理解它吗?

实体框架可以处理枚举,但从可读性的角度来看,这不是一个很好的实践。这意味着任何人在将来查看数据库或从数据库报告时,都只能看到一个无意义的整数

一种更好的方法是使用另一个实体,并使用所需的值为数据库种子

public class Call
{
    ..... //some other properties you need
    public int StatusId {get;set;}    
    public virtual Status Status {get;set}
}

public class Status
{
    public int Id {get;set;}
    public int Name {get;set;}
}
然后,您只需将这3个选项植入状态


添加或更新呼叫时,您只需将状态的种子ID分配给
StatusId
,因为这是您的FK。虚拟状态属性是您的导航属性。因此,当您在通话中访问状态时,只需使用
call.status.Name
call.status.Id
即可访问要使用的状态属性。

枚举有什么问题?enum CallStatus{Success,CallLater,etc..}@RytisI我不知道实体框架将如何处理此问题。@视频中的Yoda@RytisI点击次数过多。有人可能会认为数据库的目的是存储数据,而不是显示数据…@RytisI,这是有争议的。但在现实世界中,人们确实会查看数据库,SSR报告只是其中一个原因。如果您可以不费吹灰之力就让数据变得可读,为什么不呢?