2013-06-08 4 views
1

먼저 바보 같은 질문을하는 경우 미안 MVC 패턴에 새로운 슈퍼입니다.MVC 4 App - 데이터베이스에서 데이터 가져 오기

내 문제 : 내 사용자를위한 프로필 페이지의 건물에 문제가 있어요. 사용자가 해당 페이지로 이동하는 경우는 .. 전자 우편 주소, 전화 번호, 이름 등처럼, 그들에 대한 정보를 나열 것

참고 : 나는 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; } 

'프로필'행동으로 내 컨트롤러 :

,210

그리고 마지막으로 내보기의 몇 가지 관련 부분이 데이터를 표시 :

@model IEnumerable<OneMillion.Models.User> 

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

내가 로그인 한 사용자 A와 페이지에 액세스하려고 얻을 오류 :

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'. 

감사합니다! 속성을 설정하는

+0

귀하의 질문은 MVC 또는 MVC 패턴과 관련이 없습니다. Entity Framework는 MVC에 속하지 않습니다. –

답변

3

시도는 nullable 형식이어야합니다 ->

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

감사합니다. 작품은 완벽합니다! – PeterInvincible

1

당신의 모델 및 데이터베이스 정의 데이터베이스 정의에서 널 (NULL) 필드가 일치하지 않습니다 (나이, MoneyIn, MoneyOut 및 TimesWon) 모델에서는 null 허용되지 않는 필드를 반환합니다.

+0

감사합니다. 문제는 아니지만 답변과 함께 코드 예제를 제공 한 이후 공기가 미끄 럽습니다. – PeterInvincible

관련 문제