c# - 实体框架 6:上下文在 Code First 模式下与从 EDMX 文件生成的代码一起使用
问题描述
我正在使用 Entity Framework 6 和数据库优先方法创建 WPF 应用程序。EF为我做了一切,我能够连接到数据库,到目前为止下载数据工作,所以连接存在。但是每次我添加用户控件时,它都会给我新的错误,即未检测到连接字符串。程序无论如何都可以正常工作,但是当您的错误窗口充满它时,它很难编程。
我发现从以下方面改变上下文:
public MediaRentalEntities()
: base("name=MediaRentalEntities")
{
}
对此:
public MediaRentalEntities()
: base("MediaRentalEntities")
{
}
应该解决这个问题,但它没有。现在它抛出异常(并多次显示此错误,基于我有多少用户控件,目前为 3):
上下文在 Code First 模式下使用,代码是从 EDMX 文件生成的,用于 Database First 或 Model First 开发。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用 Database First 或 Model First,请确保 Entity Framework 连接字符串包含在启动项目的 app.config 或 web.config 中。如果要创建自己的 DbConnection,请确保它是 EntityConnection 而不是其他类型的 DbConnection,并将其传递给采用 DbConnection 的基本 DbContext 构造函数之一。要了解有关 Code First、Database First 和 Model First 的更多信息,请参阅此处的实体框架文档:http: //go.microsoft.com/fwlink/ ?LinkId=394715
这是我当前的 app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="MediaRentalEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;data source=localhost;initial catalog=MediaRental;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
开始累了,我很想换成 EntityFrameworkCore 甚至是 Dapper,感觉 EntityFramework6 对用户不利,但 WPF 在 .NET Framework 上有更多功能。
解决方案
在连接字符串 中将 MyModel替换为“ MediaRentalEntities ”。它将起作用
或者
如果您首先使用 DB 生成它,那么您将已经拥有代码类似的上下文类
public MyModel()
: base("name=MyModel")
{
}
推荐阅读
- css - CSS背景颜色不变
- scipy - 鉴于树状图,这是异常吗?
- python - 如何修复此错误:“ImportError:DLL 加载失败:找不到指定的模块。” 使用 PyQt5
- python - 在 Python 中将多个 base64 转换为图像
- gitlab - Gitlab AutoDevops 是否支持将 kubernetes 机密作为文件?
- c# - 如何使用 C# 在 xamarin.forms 中获取所有启用的键盘
- email - jenkins 中的电子邮件上游作业工件
- swiftui - 在 SwiftUI 中使用 ForEach 和 NavigationLink 缩小数组的索引超出范围
- c - POSIX 共享内存 - 自动客户端通知的方法
- java - 识别 Spring MVC DTO