MVC 4 App - 从数据库中获取数据

时间:2013-06-08 21:13:13

标签: asp.net-mvc entity-framework

首先我要说的是,我是MVC模式的新手,对不起,如果我问一个愚蠢的问题。

我的问题: 我在为用户构建个人资料页面时遇到问题。如果用户访问该页面,它将列出有关它们的信息,如电子邮件地址,电话号码,全名等。

注意:的 我正在使用SimpleMemberShipProvider用户操作的“基本”项目模板。

问题在于数据库查询,以获取有关用户的必要数据。

这是我的UserProfile表数据:

CREATE TABLE [dbo].[UserProfile] (
    [UserId]               INT            IDENTITY (1, 1) NOT NULL,
    [UserName]             NVARCHAR (MAX) NULL,
    [FirstName]            NVARCHAR (MAX) NULL,
    [LastName]             NVARCHAR (MAX) NULL,
    [Age]                  INT            NULL,
    [Sex]                  NVARCHAR (MAX) NULL,
    [SecretQuestion]       NVARCHAR (MAX) NULL,
    [SecretQuestionAnswer] NVARCHAR (MAX) NULL,
    [MoneyIn]              INT            NULL,
    [MoneyOut]             INT            NULL,
    [TimesWon]             INT            NULL,
    [Email]                NVARCHAR (MAX) DEFAULT ('') NOT NULL,
    [PhoneNumber]          NVARCHAR (MAX) NULL,
    [Address]              NVARCHAR (MAX) NULL,
    CONSTRAINT [PK_dbo.UserProfile] PRIMARY KEY CLUSTERED ([UserId] ASC)
);

我的'用户'模式:

[Table("UserProfile")]
    public class User
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        [Column("UserName")]
        public string UserName { get; set; }
        [Column("Email")]
        [Required]
        public string Email { get; set; }
        [Column("FirstName")]
        public string FirstName { get; set; }
        [Column("LastName")]
        public string LastName { get; set; }
        [Column("PhoneNumber")]
        public string PhoneNumber { get; set; }
        [Column("Address")]
        public string Address { get; set; }
        [Column("Age")]
        [Required]
        public int Age { get; set; }
        [Column("Sex")]
        public string Sex { get; set; }
        [Column("SecretQuestion")]
        [Required]
        public string SecretQuestion { get; set; }
        [Column("SecretQuestionAnswer")]
        [Required]
        public string SecretQuestionAnswer { get; set; }
        [Column("MoneyIn")]
        public int MoneyIn { get; set; }
        [Column("MoneyOut")]
        public int MoneyOut { get; set; }
        [Column("TimesWon")]
        public int TimesWon { get; set; }
    } 

这是我的DbContext类:

public DbSet<User> Users { get; set; }

我的控制器具有“个人资料”操作:

        [Authorize]
        public ActionResult Profil()
        {
            var model = db.Users.ToList();
            return View(model);
        }

最后我的视图的一些相关部分显示数据:

@model IEnumerable<OneMillion.Models.User>

@foreach (var item in Model)
{
    @item.FirstName 
}

尝试以登录用户身份访问网页时收到的错误:

Server Error in '/' Application.

The 'MoneyIn' property on 'User' could not be set to a 'null' value. You must set this property to a non-null value of type 'Int32'.

谢谢!

2 个答案:

答案 0 :(得分:3)

尝试将属性设置为可空类型 - &gt;

    [Column("MoneyIn")]
    public int? MoneyIn { get; set; }
    [Column("MoneyOut")]
    public int? MoneyOut { get; set; }

答案 1 :(得分:1)

您的模型和数据库定义不匹配,您在数据库定义(Age,MoneyIn,MoneyOut和TimesWon)中有可为空的字段,但模型中有不可为空的字段。