MVC 4实体框架 - UserProfile的外键

时间:2013-01-03 14:06:42

标签: entity-framework-4 asp.net-mvc-4 foreign-key-relationship

我使用内置的帐户控制器/模型/视图创建了一个标准的MVC 4应用程序。我现在尝试添加另一个控制器,但我想创建一个与现有用户的外键关系,但我收到错误消息:

类型为“MVC4App.Models.ListingModel”的属性“CreatedBy”上的ForeignKeyAttribute无效。在依赖类型“MVC4App.Models.ListingModel”上找不到外键名称“UserId”。 Name值应该是以逗号分隔的外键属性名称列表。

清单模型代码是:

使用System; 使用System.ComponentModel.DataAnnotations.Schema;

namespace MVC4App.Models
{
    public class ListingModel
    {
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        public string Location { get; set; }

        public string Instrument { get; set; }

        public string Genres { get; set; }

        public string Description { get; set; }

        [ForeignKey("UserId")]
        public virtual UserProfile CreatedBy { get; set; } 

        public DateTime CreatedOn { get; set; }
    }
}

我在这里缺少什么?或者有更好的方法我应该这样做吗?

另外我假设我可以在用户个人资料中添加额外的属性,例如电子邮件地址或项目后期的头像图片链接?

1 个答案:

答案 0 :(得分:4)

您必须将UserId添加到您的实体:

namespace MVC4App.Models
{
    public class ListingModel
    {
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        public string Location { get; set; }

        public string Instrument { get; set; }

        public string Genres { get; set; }

        public string Description { get; set; }

        public int UserId {get; set;}
        [ForeignKey("UserId")]
        public virtual UserProfile CreatedBy { get; set; } 

        public DateTime CreatedOn { get; set; }
    }
}