C# 实体框架无法保存在数据库中

C# 实体框架无法保存在数据库中,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我对实体框架有一个问题,因为这是我第一次将它与SQL server一起使用。我成功地用一个名为EMP的实体创建了一个实体数据模型。EMP将ID、Name和Salary作为标量属性。然后,我从模型生成了数据库,将生成的sddl复制/粘贴到SQL server中,并创建了我的数据库。我回到VS 2010 express,尝试使用以下代码将一些记录添加到数据库中: string constr = ConfigurationManager.ConnectionStrings["dataemp"].Con

我对实体框架有一个问题,因为这是我第一次将它与SQL server一起使用。我成功地用一个名为EMP的实体创建了一个实体数据模型。EMP将ID、Name和Salary作为标量属性。然后,我从模型生成了数据库,将生成的sddl复制/粘贴到SQL server中,并创建了我的数据库。我回到VS 2010 express,尝试使用以下代码将一些记录添加到数据库中:

string constr = ConfigurationManager.ConnectionStrings["dataemp"].ConnectionString;
dataemp db = new dataemp(constr);

db.AddToEmps(Emp.CreateEmp(0, "john", "Informatique", "10000000 cfa"));
db.AddToEmps(Emp.CreateEmp(1, "johny greg", "finances", "100000000 cfa"));

db.SaveChanges();//i get the error here
Console.WriteLine(
  "*********Employee actuellement dans la database*********\n{0}",
  query.ToString());
结果,编译器给了我一个异常,好像我没有连接到数据库,或者好像它无法访问数据库,但它显示在数据库资源管理器中。在数据库资源管理器中还有一点:我看不到表空间,而在SQL Server中,我可以将其视为dbo.Emps。以下是编译器向我显示的异常:

未处理的异常:System.Data.UpdateException:发生错误 在更新条目时。有关详细信息,请参阅内部异常。--> System.Data.SqlClient.SqlException:无效的对象名称“dbo.Emps”。 在System.Data.SqlClient.SqlConnection.OnErrorSqlException中, 布尔断开连接 System.Data.SqlClient.SqlInternalConnection.OnErrorSqlException 异常,布尔断开连接位于 System.Data.SqlClient.TdsParser.ThroweException和警告位于 System.Data.SqlClient.TdsParser.runBehavior, SqlCommand cmdHandler、SqlDataReader dataStre am、, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject 位于System.Data.SqlClient.SqlDataReader.ConsumerMetadata的stateObj 位于System.Data.SqlClient.SqlDataReader.get_元数据位于 System.Data.SqlClient.SqlCommand.FinishExecuteReaderSqlDataReader ds, RunBehavior RunBehavior,String res eToptionString位于 System.Data.SqlClient.SqlCommand.RunExecuteReaderTdsCommandBehavior cmdBehavior、RunBehavior、Boolean returnStream、Boolean 异步于 System.Data.SqlClient.SqlCommand.RunExecuteReaderCommandBehavior cmdBehavior、RunBehavior、Bo-olean returnStream、字符串 方法,DbAsyncResult位于 System.Data.SqlClient.SqlCommand.RunExecuteReaderCommandBehavior cmdBehavior、RunBehavior、Bo-olean returnStream、字符串 方法在 System.Data.SqlClient.SqlCommand.ExecuteReaderCommandBehavior 行为,字符串方法 System.Data.SqlClient.SqlCommand.ExecuteDbDataReaderCommandBehavior 行为 System.Data.Common.DbCommand.ExecuteReaderCommandBehavior行为 在 System.Data.Mapping.Update.Internal.DynamicUpdateCommand.ExecuteUpdateTranslator 翻译器,实体连接,字典2 IdentifierValue,列表1生成的值位于 System.Data.Mapping.Update.Internal.UpdateTranslator.UpdateEntityStateManager stateManager,IEntityAdapt er适配器-内部异常结束 堆栈跟踪-at System.Data.Mapping.Update.Internal.UpdateTranslator.UpdateEntityStateManager stateManager,IEntityAdapt er适配器位于 System.Data.EntityClient.EntityAdapter.UpdateEntityStateManager 全切 System.Data.Objects.ObjectContext.SaveChangesSaveOptions选项 在ConsoleApplication1.Program.MainString[]参数处,位于D:\Users\ITA中 Final\documents\visual studio 2010\Project s\zut\zut\Program.cs:line 十三,


我已经阅读了很多关于实体框架和linq到实体的教程。我无法找出我在这里做错了什么。

发生此错误的唯一方法是,您所连接的数据库中不存在该表。用于上下文的连接字符串不正确。如果Web或应用程序配置文件中的连接字符串的值错误,或者您手动设置该连接字符串并将其设置为错误,则可能会发生这种情况。

鉴于您对数据库中不存在的内容有问题,这表明连接错误,并且您的连接字符串

connectionString=元数据=res:///Model1.csdl|res:///Model1.ssdl|res://*/型号‌​1.msl;provider=System.Data.SqlClient;供应商 连接字符串数据 Source=.\SQLEXPRESS;AttachDbFilename=D:\Users\ITA 最终\文档\ Visual Studio 2010\Projects\employee.mdf;综合安全=真实;连接 超时=30;用户实例=True;MultipleActiveResultSets=True'

其中ADO使用的实际连接字符串为

Data Source=.\SQLEXPRESS;
AttachDbFilename="D:\Users\ITAFinal\Documents\Visual Studio 
    2010\Projects\employee.mdf";
Integrated Security=True;
Connect Timeout=30;
User Instance=True;
MultipleActiveResultSets=True
我想知道为什么连接字符串没有初始目录组件。您应该确定MDF文件中要连接的正确数据库,并包括

Initial Catalog=MyDbName;

在字符串中。在集成安全性之后立即=真;工件将是一个很好的放置位置。

无效的对象名称“dbo.Emps”好吧,你检查过它是否存在吗?是的,我在sql server中确实存在,但visual c数据库资源管理器根本不显示它,我不知道该怎么办;该文件与连接字符串指向的文件相同是否确实连接到了正确的数据库?消息非常清楚-数据库中不存在Emps
你正在连接towell,我也这么认为,但它在visual c中显示了相同的数据库名称,即employee.mdf,当我单击“测试连接”时,它工作在哪里?我在模型创建时在哪里找到它?不管怎样,我在谷歌上找到它,我会回家按你说的做。我知道,可能我没有将连接字符串设置为真正的数据库发布了上面的连接字符串请看一看,并告诉我有什么问题我将add name更改为dataemp,因为它是实体集的名称container@LilzVotcaLove,您的配置文件中是否有节?如果是这样,你有没有一个是的,我有。这是字符串模型文件必须与数据库同名吗非常正确,你说的是visual studio自动生成的,我没有修改任何内容,除了我会做的,我很确定这就是我缺少的thanks@LilzVotcaLove很乐意帮忙,记住投票或标记正确!我终于明白了真正的问题是sql server将数据库保存到program files\microsoft sql server\mssql\…\data中,Visual studio使用了E.F创建的默认文件,该文件存储在mydocuments中。现在我只需了解如何更改sql server的默认保存位置