2013-07-04 4 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); 
    } 

Что я делаю неправильно? ... новинка для ef ....

+0

ИМО, стоит спросить, вы скопировать файл базы данных в каталог вывода на каждой сборки или вы используете SQL Server? –

+0

@Alex, Привет, нет Я не копирую файлы db в выходной каталог при каждой сборке ... Я использовал ef 4.1 в приложении Windows раньше, и это сработало там .... – Kerieks

+0

Вы проверили типы значений, которые вы назначаете? – Guru

ответ

1

Сначала проверьте строку подключения.

быть уверены, что это на global.asax:

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

используйте следующий код:

 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(); 
     } 
Смежные вопросы