CSh*_*ner 11 c# entity-framework ef-model-first
我有问题,我刚开始学习EF Model First并且我在一段时间内待在一个点上.我有这样的错误:
"更新条目时发生错误.有关详细信息,请参阅内部异常"
我在图上创建了一个简单的模型,生成了数据库并在C#中编写了简单的代码,只在表中添加了一行,但错误一直出现.
我发布了截图与图/生成的DLL /简单主/错误抛出

更大尺寸的链接:http://i.imgur.com/bKGc4wv.png
Joã*_*nho 12
转动Pluralization On.问题是,你的模型对象是使用奇异的名字(Pupil)约定,而在你的数据库使用的是多元化的名字Pupils与s.
UPDATE
这篇文章展示了如何打开或关闭它.该帖子的一些相关摘录:
打开和关闭多元化
在"工具"菜单上,单击"选项".
在"选项"对话框中,展开"数据库工具".注意:如果"数据库工具"节点不可见,请选择"显示所有设置".
单击O/R设计器.
将名称的多个化设置为Enabled = False以设置O/R设计器,以便它不会更改类名.
将多个名称设置为Enabled = True可将复数规则应用于添加到O/R设计器的对象的类名.
更新2
但请注意,您应该避免使用复数名称.你可以在这里阅读如何做到(我会在这里引用它,以防链接被破坏).
(...)使用Entity Framework Code First方法时,您将从模型类创建数据库表.通常,Entity Framework将创建具有多个名称的表.这意味着如果你有一个名为PhoneNumber的模型类,Entity框架将为这个类创建一个名为"PhoneNumbers"的表.如果你想避免复数名称并希望像Customer这样的单数名称,你可以这样做在你的DBContext类中,覆盖像这样的"OnModelCreating"方法(...)

(...)使用此方法覆盖将避免创建具有多个名称的表.现在它将创建一个名为"PhoneNumber"的表,而不是"PhoneNumbers" (...)
查看异常的内部异常以获得更具体的错误信息。
查看内部异常的一种方法是捕获异常,并在其上放置一个断点。然后在 Locals 窗口中:选择 Exception 变量 > InnerException > Message
和/或只是写到控制台:
catch (Exception e)
{
Console.WriteLine(e.InnerException.Message);
}
Run Code Online (Sandbox Code Playgroud)
它可能是从.net到sql的数据转换的原因.例如datetime转换错误.
根本不是一个确切的错误.您可以在exception.InnerException.InnerException - > ResultView中查看watch中的确切错误.
对我来说,它是对datetime列的null引用