1

所以我有一个城市模型。每个城市都有一个 Name 属性以及其他属性以及 StateId 和 State(StateId 是外键)。State 也有一个 Name 属性。我想创建一个名为“Name_Full”的属性,它是 Name + ", " + State.Name,就像“Ashland, OR”一样。但是,每当我想引用该属性时,都会收到错误“对象引用未设置为对象的实例”。

这是城市模型的代码:

public class City
{
    public int CityId { get; set; }

    [Required]
    public string Name { get; set; }

    public int StateId { get; set; }

    public State State { get; set; }

    public List<Store> Stores { get; set; }

    public string Name_Full
    {
        get
        {
            return Name + ", " + State.Name;
        }
    }
}

(我没有包括命名空间和使用的东西)。

4

2 回答 2

1

大概有些State表在您的数据库中为空;因此,当您尝试提取空对象的Name属性时,会引发异常。使用以下方法处理 null 情况:

return Name + ((State == null) ? "" : ", " + State.Name);
于 2012-06-21T06:44:11.850 回答
1

确保在调用 Name_Full 时,必须加载 State 对象且不为空。如果您担心外键关系不存在,您可以显式链接外键:

// Foreign key to state
[ForeignKey("State")] 
public int StateId { get; set; } 
public virtual State State { get; set; } 
于 2012-06-21T06:47:35.910 回答