我遇到了实体框架的问题,因为这是我第一次将它与 SQL 服务器一起使用。我成功地使用名为 EMP 的实体创建了一个实体数据模型。EMP 具有 ID、Name 和 Salary 作为标量属性。然后我从模型生成数据库,将生成的 sddl 复制/粘贴到 SQL 服务器并创建我的数据库。我回到 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());
结果,编译器给了我一个异常,好像我没有连接到数据库,或者好像它无法访问数据库但它显示在数据库资源管理器中。数据库资源管理器中的另一点:我看不到表(EMP),而在 SQL Server 中,我可以将其视为 dbo.Emps。这是编译器向我显示的异常:
未处理的异常:System.Data.UpdateException:更新条目时出错。有关详细信息,请参阅内部异常。---> System.Data.SqlClient.SqlException:对象名称“dbo.Emps”无效。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 在 System.Data .SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStre am, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 在 System.Data.SqlClient.SqlDataReader.get_MetaData() 在 System. Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String res etOptionsString)在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔返回流,布尔异步)在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔返回流,字符串方法,DbAsyncResult 结果)在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior, Bo olean returnStream,String 方法)在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,String 方法)在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior 行为)在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior行为)SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior 行为)SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior 行为)
在 System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator 转换器,EntityConnection 连接,字典2 identifierValues, List
1 生成值)在 System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter 适配器)- - 内部异常堆栈跟踪结束 --- 在 System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) 在 System.Data 的 System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapt er adapter) .Objects.ObjectContext.SaveChanges(SaveOptions options)
在 D:\Users\ITA Final\documents\visual studio 2010\Project s\zut\zut\Program.cs:line 13 中的 ConsoleApplication1.Program.Main(String[] args)
我已经阅读了许多关于实体框架和 linq 到实体的教程。我无法弄清楚我在这里做错了什么。