ASP.NET MVC模型具有外键属性

时间:2012-06-21 06:39:51

标签: c# .net asp.net-mvc

所以我有一个城市模型。每个城市都有一个Name属性以及其他城市,StateId和State(StateId是外键)。 State还有一个Name属性。我想创建一个名为“Name_Full”的属性,名称为“+”,“+ 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;
        }
    }
}

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

2 个答案:

答案 0 :(得分:1)

据推测,某些 State 表在数据库中为空;因此,当您尝试提取null对象的 Name 属性时,将抛出异常。使用以下内容处理null case:

return Name + ((State == null) ? "" : ", " + State.Name);

答案 1 :(得分:1)

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

// Foreign key to state
[ForeignKey("State")] 
public int StateId { get; set; } 
public virtual State State { get; set; }