2013-07-04 5 views
4

EF 5.0을 사용하여 데이터베이스에 레코드를 삽입하는 기능이 작동하지 않습니다. 내 코드를 통해 디버깅 예외를 찾을 수 없습니다. 코드를 살펴보면 데이터베이스에 새 레코드가 삽입되어야하지만 데이터베이스를 보면 새 레코드가 만들어지지 않습니다. 그러나, 나는 내 데이터베이스를 변경했는데, "assestUser"(모델)를 점검 할 때 디버그에서 삭제 된 컬럼 (변경 사항)을 포함한 모든 값을 볼 수 있습니다. 누군가 내가 뭘 잘못하고있는 걸 도와 주시겠습니까? 이것은 내가 무엇을했는지 있습니다 :데이터베이스가 레코드를 만들지 않습니다.

페이지 :

public partial class _Default : Page 
{ 
    EntityContext context; 

    public _Default() 
    { 
     context = new EntityContext(); 
    } 

    protected void btnSavePersonalDetails_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      SkillsAssestUser assestUser = new SkillsAssestUser(); 
      assestUser.DomainAcc = lblDomAcc.Text; 
      assestUser.Name = txtName.Text; 
      assestUser.Surname = txtSurname.Text; 
      assestUser.Division = txtDivision.Text; 
      assestUser.Manager = txtManager.Text; 


      context.SkillsAssestUsers.Add(assestUser); 
      context.SaveChanges(); 


      //var assestUser = context.Set<SkillsAssestUser>(); 
      //assestUser.Add(new SkillsAssestUser 
      //{ 
      // DomainAcc = lblDomAcc.Text, 
      // Name = txtName.Text, 
      // Surname = txtSurname.Text, 
      // Division = txtDivision.Text, 
      // Manager = txtManager.Text 
      //}); 

      //context.SaveChanges(); 

      ClearPersonalDetails(); 
     } 
     catch (Exception ex) 
     { 
      throw new Exception("Error inserting Details. " + ex.Message); 
     } 
    } 

DbContext : 내가 잘못

public partial class EntityContext : DbContext 
{ 
    public EntityContext() 
     : base("name=SOSConnectionString") 
    { 
     base.Configuration.LazyLoadingEnabled = true; 
     base.Configuration.ProxyCreationEnabled = false; 
    } 

    #region AddTables 
    public DbSet<AdditionalSkills> AdditionalSkillss { get; set; } 
    public DbSet<CertifiedTraining> CertifiedTrainings { get; set; } 
    public DbSet<OtherCertifiedTraining> OtherCertifiedTrainings { get; set; } 
    public DbSet<OtherEdu> OtherEdus { get; set; } 
    public DbSet<SchoolEdu> SchoolEdus { get; set; } 
    public DbSet<SkillsAssestUser> SkillsAssestUsers { get; set; } 
    public DbSet<ValueAddedSkills> ValueAddedSkillss { get; set; } 
    #endregion 
    } 

    void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 
     AuthConfig.RegisterOpenAuth(); 
     Database.SetInitializer<EntityContext>(null); 
    } 

을 뭐하는 거지? ... 신제품 ...

+0

IMO 요구하는 가치 :이 같은

void Application_Start(object sender, EventArgs e) { // Code that runs on application startup AuthConfig.RegisterOpenAuth(); Database.SetInitializer<EntityContext>(null); } 

코드를 사용 :

이 Global.asax에 켜져 있는지 확인 또는 SQL Server를 사용합니까? –

+0

@Alex, 안녕하세요, 아니요. 모든 빌드에서 출력 디렉토리에 db 파일을 복사하지 않습니다 ... 이전에 Windows 응용 프로그램에서 ef 4.1을 사용했는데이 작업이있었습니다 ... – Kerieks

+0

유형을 확인 했습니까? 당신이 지정하는 값들 중? – Guru

답변

1

처음으로 연결 문자열을 확인하십시오. 당신은 모든 빌드 출력 디렉토리에 데이터베이스 파일을 복사,

 using (var mycontext = new context()) 
     { 
      SkillsAssestUser assestUser = new SkillsAssestUser(); 
      assestUser.DomainAcc = lblDomAcc.Text; 
      assestUser.Name = txtName.Text; 
      assestUser.Surname = txtSurname.Text; 
      assestUser.Division = txtDivision.Text; 
      assestUser.Manager = txtManager.Text; 

      mycontext.SkillsAssestUsers.Add(assestUser); 
      mycontext.SaveChanges(); 
     } 
관련 문제