为什么我保存时会发生此错误?
型号:
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'.;
答案 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'。