数据库优先 - Mono 上的 EF6

2023-12-04

Context:

我需要在我的本地计算机(Macbook)上运行一个“遗留”.Net 应用程序...(我们的大部分堆栈是 dotnetcore),但这个特定的应用程序有点旧。

虽然我确实意识到可能只启动一个 Windows 虚拟机并在那里构建它会更容易,但我正在尝试构建项目(并使用 MONO 运行)

到目前为止,我已经通过在中添加一些条件检查解决了一些问题.csproj,它让应用程序构建并运行......勉强,因为当我点击第一个检查数据库连接的 API 时它就死掉了。

当前设置:

  • Mono JIT 编译器版本 5.18.1.3
  • .Net目标4.6.1
  • Rider IDE(我也安装了 VS for OSX)
  • EF6.1.3

该项目的结构如下:

Project.Data
  - App.Config
  - DataModel.edmx
Project.Api (which references the Project.Data) 
  - Web.Config

两者都包含以下连接字符串(为了简洁而缩进):

<add name="SomeEntities" 

connectionString="
metadata=
  res://*/DataModel.csdl|
  res://*/DataModel.ssdl|
  res://*/DataModel.msl;

provider=System.Data.SqlClient;

provider connection string=
  &quot;
    data source=somedb;
    initial catalog=some_catalog;
    user id=some_id;
    password=some_password;
    App=EntityFramework;
  &quot;
" 

providerName="System.Data.EntityClient" />

Problem:

我认为发生的情况是常规构建任务不会从.edmx,但至于如何在我当前的环境下做到这一点......我开始认为这是不可能的。

Error:

Unable to load the specified metadata resource.
  at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources

我看过各种关于修改连接字符串的帖子,所有这些都具有不同的结果,但从未产生正常运行的应用程序。

更改为,metadata=res://*/;结果是:

Argument 'xmlReader' is not valid. A minimum of one .ssdl artifact must be supplied. 
  at System.Data.Entity.Core.EntityUtil.CheckArgumentEmpty[T]

更改为标准 SqlConnection 字符串:

System.Data.Entity.Infrastructure.UnintentionalCodeFirstException: 
The context is being used in Code First mode with code that was generated from an EDMX file for either Database First or Model First development.  This will not work correctly. To fix this problem do not remove the line of code that throws this exception. If you wish to use Database First or Model First, then make sure that the Entity Framework connection string is included in the app.config or web.config of the start-up project. If you are creating your own DbConnection, then make sure that it is an EntityConnection and not some other type of DbConnection, and that you pass it to one of the base DbContext constructors that take a DbConnection. To learn more about Code First, Database First, and Model First see the Entity Framework documentation here: http://go.microsoft.com/fwlink/?LinkId=394715

问题:

这是否可能,或者我应该恢复购买 Windows 机器?


因此,在浏览了一段时间网络并询问了一些论坛和群组后,我得出的结论是,这可能是徒劳的,特别是考虑到像 dotnetcore 这样的东西现在已经很常见了。

有关的更多背景信息issue由 VS Code for Mac 团队的一位开发人员回答...

在 Windows 上有一些 Microsoft.Data.Entity MSBuild 任务。这些 用于在构建时生成各种 .csdl、.ssdl 和 .msl 文件 .edmx 文件中的时间。如果您在 Visual 中查看构建输出 Windows 上的 Studio 您应该会看到类似以下内容的内容:

完全构建目标“EntityDeployEmbeddedResources”。输出 文件“obj\Debug\edmsREsourcesToEmbed\Model.ssdl”不存在。使用 程序集中的“EntityDeploy”任务 “C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Data.Entity.Build.Tasks.dll”。 Microsoft.Data.Entity.Build.Tasks.dll 和关联的 Mac 上不存在 Microsoft.Data.Entity.targets 文件。

在 Mac 上,唯一的解决方法是使用 Entity Framework Core 是跨平台的,不要使用 edmx 文件,因为这些文件不是 支持的。

因此选项是:

  • 端口到 dotnetcore,或
  • 买一台windows机器

...对于这个旧版应用程序。由于我们正在以任何方式迁移到 dotnetcore...我相信现实的解决方案是优先将此特定项目移植到 dotnetcore。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库优先 - Mono 上的 EF6 的相关文章

  • 从 C# 检测 powerpoint 形状上的事件

    是否有可能检测在 Powerpoint 形状 例如箭头 上发生的事件 到目前为止 我发现唯一的可能性是 selectitemchanged beforerightclick 和 beforedoubleclick 但无法找到检测其他内容的方
  • 为什么 IsAssignableFrom() 不适用于 int 和 double?

    这是错误的 typeof double IsAssignableFrom typeof int 这是错误的 typeof int IsAssignableFrom typeof double 但这有效 double a 1 0 int b
  • 计算按月分隔的两个日期之间的天数

    我需要计算两个日期之间的天数 DateTime 但有一个转折 我想知道这两天跨越的每个月有多少天 两个人有简单的方法吗 Example 我的开始日期是 30 03 2011 结束日期是 05 04 2011 那么结果应该是这样的 var r
  • 有没有更好的方法使用 MVC 4 和 Entity Framework 5 添加子记录?

    我正在学习 MVC 并结合实体框架处理其无状态性质 我的问题是 有没有更优雅的方式来处理下面的场景 我有两个 POCO 实体 public class Contest public long ID get set public IColle
  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 使用 MSBuild/Web 部署项目启动程序而不等待它

    我希望在部署完成后在某个文件夹上打开资源管理器 并且我正在使用以下命令来尝试它
  • asp.net mvc 4 - 可以在每个线程共享 DbContext 吗?

    From 每个 Web 请求一个 DbContext 为什么 https stackoverflow com questions 10585478 one dbcontext per web request why 我的理解是 DbCont
  • 实用程序库中应包含哪些内容[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 随着我的项目越来越多 我发现我经常从一个项目到另一个项目 从一个客户到另一个客户重复许多常见的任务 因此 我开始组装一个 实用程序 库 这是这些
  • DotNET 应用程序中的 GDI 句柄

    我的纯 DotNET 库作为非托管桌面应用程序中的插件运行 我收到了稳定的 虽然低 崩溃报告流 这些报告似乎表明 GDI 句柄存在问题 错误消息中的字体等 恢复为系统字体 各种控件的显示崩溃 不久后发生大规模崩溃 我的窗体几乎没有控件 但我
  • ASP.NET MVC 中 ModelState.AddModelError 中的关键参数有什么意义?

    我在我的控制器中添加了验证检查来修改ModelState如果验证失败 例如 private bool ValidateMoney string raw string name decimal min decimal max try var
  • 带有自定义鉴别器的 EntityFramework Code First 继承

    我正在尝试在 EntityFramework Code First 中映射以下继承 public class Member public string ProjectName get set public string AssemblyNa
  • 如何在没有 Visual Studio 的情况下将新文件添加到 .csproj 文件

    如何添加新文件到 csproj从命令提示符 我认为没有任何工具可以响应命令行上的 add project 命令来执行此操作 但我认为您可以幸运地创建一个程序 脚本来直接操作 csproj 文件的 XML 内容 csproj 文件的结构如下所
  • 如何获取Winforms窗体标题栏高度的大小?

    因此 如果它是工具窗口或可最小化的表单 我希望能够以编程方式获取其高度 这可能吗 如果是这样怎么办 您可以使用以下方法确定工具窗口和普通表单的标题栏高度 Rectangle screenRectangle this RectangleToS
  • 同一服务器上的多个.NET版本

    所以我一直都知道在一台计算机 客户端或服务器 上运行多个版本的 NET 框架是可以的 这个问题 https stackoverflow com questions 407306 running many versions of net on
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • c#.NET 和 sprintf 语法

    这段代码如何翻译成 C 具体来说是如何sprintf用C 实现 string output The user s logged in string loggedIn is string loggedOut isn t if TheUser
  • 如何等待远程 .NET 调试器连接

    今天我遇到了一个问题 我需要远程调试程序 该程序是从另一个系统启动的 所以我真的没有机会在命令行上与它交互 不过我可以很容易地改变它的来源 我需要做的是让程序正常启动 然后等待我用调试器附加到它 我想不出一个让我快乐的方法 我确实发现了这个
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 使用.Net/C# 计算集合的频率分布

    是否有一种快速 简单的方法来使用 Linq 或其他方式计算 Net 集合的频率分布 例如 任意长的 List 包含许多重复项 遍历列表并计算 跟踪重复次数的巧妙方法是什么 查找列表中重复项的最简单方法是将其分组 如下所示 var dups

随机推荐