简单的代码优先实体样本不保存

时间:2011-04-09 14:38:25

标签: entity-framework code-first ef-code-first

为什么我保存时会发生此错误?

型号:

public class SingleEmail
    {
        [Key]
        public int MailID{get;set;}
        public string ToAddress{get;set;}
        public string Subject{get;set;}
        public string Body{get;set;}
    }

    public class MyDBContext : DbContext
    {

        public DbSet<SingleEmail> SingleEmail{get;set;}

    }


using (MyDBContext db = new MyDBContext())
{
    SingleEmail m = new SingleEmail();
    m.ToAddress = email.To[0].Address;
    m.Subject = email.Subject;
    m.Body = email.Body;

    db.SingleEmail.Add(m);
    db.SaveChanges();

}
            {
  

更新时出错   条目。查看内部异常   细节;

    Invalid object name 'dbo.SingleEmails'.;

2 个答案:

答案 0 :(得分:0)

你有一个错字(?) - 这个:

    public DbSet<SingleEmail> SingleEmail{get;set;}

应该是(复数)

    public DbSet<SingleEmail> SingleEmails{get;set;}

否则您的DbSet与您的某个实体具有相同的名称,这可能是无意的,并且与EF不相符,因为默认情况下EF具有自动复数支持,因此它寻找{{1} }。有这方面的解决方法,但在这种情况下,我只是重命名Dbset - 这是有道理的。

修改:

尝试了你的样本模型,它适用于EF 4.1 - 你使用的EF版本是什么?

答案 1 :(得分:0)

确保App.config文件中的连接字符串正确无误。我有同样的错误,我跟踪它指向错误的数据库,不包含新表。

就我而言,我的服务DLL项目的App.config使用新表设置为Database1。生成映射等时,实体框架很好。

问题在于我是从控制台应用程序调用它的,它自己的App.config指向错误的数据库。在运行期间,找不到表,并且无法添加记录。我得到了同样的错误

无效的对象名称'dbo.MyNewTableName'。