2011-12-16 57 views
2

正確使用的.Net實體我下面這篇文章: http://msdn.microsoft.com/en-us/data/gg685467在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(); 
      } 

我得到的錯誤實體未映射...

有人可以告訴我什麼我做錯了嗎?我嘗試使用另一種添加實體數據模型的方法,但它不會使用我的主要連接。請問我做錯了什麼?

編輯: 現在沒有什麼會到數據庫中,但我沒有得到任何錯誤,這是我在做什麼:

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

因爲你在你的情況下只有UserDbSet和你正在嘗試保存UserModel類型的對象。將DbSet聲明更改爲DbSet<UserModel>

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

您好我這樣做,現在我沒有得到一個錯誤,但沒有什麼是進入數據庫... – Darren 2011-12-16 16:55:07

0

您需要告訴您的上下文State的新對象。如果我錯了,請糾正我,但執行.Add()時的默認狀態爲EntityState.Unchanged,因此上下文不保存任何內容,因爲就其相關而言,沒有任何內容可以保存。

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

這裏是我工作的應用程序的例子,因爲我們所說的,是編譯/運行/保存到DB

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

這也沒有工作:( – Darren 2011-12-16 17:13:45