c# - 从 Entity Framework 连接字符串创建 DataContext?

标签 c# asp.net entity-framework

我正在尝试在我的代码中进行此调用:

string conn = ConfigurationManager.ConnectionStrings["MyDBEntities"].ConnectionString;
DataContext context = new DataContext(conn);
Table<MyApp.Entities.Employee> myTable = context.GetTable<MyApp.Entities.Employee>();

这是我的连接字符串:

<connectionStrings>
  <add name="MyDBEntities" connectionString="metadata=res://*/Entities.MyDB.csdl|res://*/Entities.MyDB.ssdl|res://*/Entities.MyDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=STEVEN-PC;Initial Catalog=MyDB;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  <add name="MyDB" connectionString="Server=STEVEN-PC;Database=MyDB;Trusted_Connection=yes;" />
</connectionStrings>

创建 DataContext 时出现错误:不支持关键字:“元数据”。

如果我使用第二个连接字符串,在尝试获取表时会出现错误:“/”应用程序中的服务器错误。 “MyApp.Entities.Employee”类型未映射为表。

我在这里做错了什么?

最佳答案

您正在混合搭配 LINQ-to-SQLLINQ-to-Entites ;两者不兼容。

当您使用 LINQ-to-Entities 创建实体模型时,它会创建一个派生自 ObjectContext 的对象这将有 IQueryable<T> 您将用于查询基础的实现。这ObjectContext还将具有采用适当元数据将实体模型映射到数据库的构造函数;这就是 Entity Framework 连接字符串需要 Metadata 的原因引用资料。

当您尝试使用 LINQ-to-SQL 时,您可以将常规数据库连接传递给 DataContext 类(或派生类)。 DataContext处理对象到数据库的映射不同于 Entity Framework ;它依赖于模型上的属性来映射到表/列(分别使用 TableAttribute ColumnAttribute 属性)。当您使用 Entity Framework 创建实体时,这些属性不存在。

注意:您可以将 XML 映射文件(不同于 Entity Framework 中使用的类型)与 LINQ-to-SQL 一起使用,但并不常用。

也就是说,最简单的方法是选择一种技术堆栈(LINQ-to-SQL 或 LINQ-to-Entities)并坚持使用。

关于c# - 从 Entity Framework 连接字符串创建 DataContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6012638/

相关文章:

postgresql - 可以使用 POSTGRESQL 在 Code First Entity Framework 中指定 JSONB GIN 索引吗?

entity-framework - 使用 Entity Framework 代码优先迁移时减少已编译 DLL 膨胀的方法

c# - 如何将附加 blob 上传到 azure 而不会出现大小限制异常?

javascript - 跨浏览器语音识别

c# - 工厂设计模式(需要批判)

asp.net - 我正在尝试设置标签文本的格式

c# - 静态变量以某种方式维护状态?

c# - Entity Framework - 在 Linq 中处理空值

c# - 如何获取 DbSet 的主键?

c# - 用于缩小从 WebMethods 返回的 ASP.NET 3.5 XML 文档的选项