我正在关注这篇文章: http://msdn.microsoft.com/en-us/data/gg685467
我有我的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 :(得分:0)
因为您的上下文中只有User
类型DbSet
,并且您正在尝试保存UserModel
类型对象。将DbSet声明更改为DbSet<UserModel>
。
public class UserContext : DbContext
{
public DbSet<UserModel> Users { get; set; }
}
答案 1 :(得分: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);