从EntityFramework连接字符串创建DataContext?我正在尝试在我的代码中进行此调用:stringconn=ConfigurationManager.ConnectionStrings["MyDBEntities"].ConnectionString;DataContextcontext=newDataContext(conn);表myTable=context.GetTable();这是我的连接字符串String:E??rrorcreatingDataContext:Keywordnotsupported:'metadata'。如果我使用第二个连接字符串,我会在尝试获取表时收到错误消息:“/”应用程序中的服务器错误。“MyApp.Entities.Employee”类型未映射为表。我在这里做错了什么?如果你想使用EntityFramework,你应该使用ObjectContext,而不是DataContext,因为这是Linq-To-Sql的基类。当您创建ADO.NET实体数据模型时,VisualStudio会生成(在您完成从数据库向导或使用设计器生成模型后)一个从ObjectContext派生的类,该类具有默认连接字符串(您在向导中选择).在这里,您可以看到来自ADO.NET团队的关于如何开始使用EF的很好的教程。您不应该直接使用ObjectContext,至少在没有手动创建元数据文件并在连接字符串中指向它们的情况下(从未见过直接使用DataContext类,所以如果我错了有人纠正我),作为向导我在上面提到创建各种映射数据-将SQL表/视图/任何内容映射到实体类。如果您想提供自己的类连接,可以使用EntityConnectionStringBuilder以编程方式进行。下面是如何使用MSDNEDIT中的EntityConnectionStringBuilder的示例:我错误地写了DataContext,就好像它是设计器生成代码的EF基类一样。这就像casperOne为Linq-To-Sql类声明了一个基类。更改了我的答案以反映他的评论您正在混合和匹配LINQ-to-SQL和LINQ-to-Entites;两者不兼容。当您使用LINQ-to-Entities创建实体模型时,它会创建一个派生自ObjectContext的对象,该对象将具有一个IQueryable实现,您将使用该实现作为查询的基础。此ObjectContext还将具有构造函数,这些构造函数采用适当的元数据将实体模型映射到数据库;这就是实体框架连接字符串需要元数据引用的原因。当您尝试使用LINQ-to-SQL时,您可以将常规数据库连接传递给DataContext类(或派生类)。DataContext处理对象到数据库映射的方式与EntityFramework不同;它依赖于模型上的属性来映射到表/列(分别使用TableAttribute和ColumnAttribute属性)。使用实体框架创建实体时,这些属性不存在。注意:您可以将XML映射文件(一种不同于实体框架中使用的类型)与LINQ-to-SQL一起使用,但它并不常用。也就是说,最简单的方法是选择一种技术堆栈(LINQ-to-SQL或LINQ-to-Entities)并坚持使用。以防万一,这就是我所做的。我在Web.config中没有连接,因为我需要一个DropDownList来选择连接。stringconnDev=@"metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;providerconnectionstring="“服务器=MyDevServer;数据库=MyDB;集成安全性=True”“”;EntityConnectionec=newEntityConnection(connDev);MyDBContextdb=newMyDBContext(ec);varpeople=db.People.ToList();connectionstring已经在EntityModel中所以你可以尝试像这样使用默认连接:using(context=newDataContext()){varmyTable=context.GetTable();您也可以试试这个:MyApp.Entities.EmployeemyTable=context.GetTable();编辑:GetTable()将返回类型T,因此上面的语法是正确的。如果要覆盖连接字符串,使用web.config文件(MyDB)中的第二个连接字符串以上是C#学习教程:CreateDataContextfromEntityFrameworkconnectionstring?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
