2011-12-16 2 views
2

Я выполняю эту статью: http://msdn.microsoft.com/en-us/data/gg685467Правильно используя объекты .Net в MVC3

У меня UserModel:

using System; 
using System.ComponentModel.DataAnnotations; 
using System.Data.Entity; 

namespace Website.Models 
{ 
    public class UserContext : DbContext 
    { 
     public DbSet<User> Users { get; set; } 
    } 

    public class UserModel 
    { 
     [Required] 
     [DataType(DataType.Text)] 
     [Display(Name = "First Name")] 
     public string FirstName { get; set; } 

     [Required] 
     [DataType(DataType.Text)] 
     [Display(Name = "Last Name")] 
     public string LastName { get; set; } 

     public DateTime DateCreated { get; set; } 
    } 
} 

Однако, когда я бегу:

  using (UserContext db = new UserContext()) 
      { 
       db.Users.Add(user); 
       db.SaveChanges(); 
      } 

Я получаю ошибку Объект не отображается ...

Может кто-нибудь, пожалуйста, скажите мне, что я я делаю неправильно? Я попытался использовать другой метод добавления модели данных сущности, но не использовал мое основное соединение. Пожалуйста, что я делаю неправильно?

EDIT: Теперь ничто не собирается в базу данных, но я не подвожу не ошибка, это то, что я делаю:

User user = new UserModel(); 
    user.FirstName = "Please"; 
    user.LastName = "Work"; 
    user.DateCreated = DateTime.Now; 
    user.AspNetUserId = new Guid(); 

    using (var userContext = new UserContext()) 
    { 
     userContext.Users.Add(user); 
     userContext.SaveChanges(); 
    } 

ответ

0

Потому что у вас есть только User тип DbSet в вашем контексте, и вы пытаетесь для сохранения объекта типа UserModel. Измените объявление DbSet на DbSet<UserModel>.

public class UserContext : DbContext 
{ 
    public DbSet<UserModel> Users { get; set; } 
} 
+0

Привет Я сделал, что теперь я не получаю сообщение об ошибке, однако ничего не входя в базу данных ... – Darren

0

Необходимо указать ваш контекст State нового объекта. Пожалуйста, исправьте меня, если я ошибаюсь, но состояние по умолчанию, когда вы выполняете .Add(), равно EntityState.Unchanged, поэтому контекст ничего не сохраняет, поскольку, насколько это касается, ничего не нужно сохранять.

using (var userContext = new UserContext()) 
    { 
     userContext.Users.Add(user); 
     userContext.entry(user).State = EntityState.Added; 
     userContext.SaveChanges(); 
    } 

Вот пример из приложения я работаю, как мы говорим, что компилирует/прогонов/сохраняет в БД

 dr405.Transmitted = true; 
     dr405.ModDate = DateTime.Now; 
     db.dr405s.Add(dr405); 
     db.Entry(dr405).State = EntityState.Modified; 
     service.Save(db); 
+0

Это тоже не сработало :( – Darren

+0

Можете ли вы быть более конкретным, чем это? Что не получилось? Вы получили ошибку времени выполнения? –

+0

У меня не было никакой ошибки или чего-то еще – Darren