我有一个 .NET Framework 4.6.1 类库,其中包含我的存储库层。我们正在构建 ASP.NET Core API,并希望在短期内访问现有存储库以减少迁移工作。我们正在将存储库迁移到 .NET Standard 2.0 类库。存储库层使用 Entity Framework 6.2,并对实体使用流畅的配置。我遇到的挑战是,我们有几个地方使用 DatabaseGenerateOption,它是在 System.ComponentModel.DataAnnotations 中定义的,它是一个框架库,似乎不适用于 .NET Standard。有一个NuGet包System.ComponentModel.Annotations,但它似乎没有帮助。有没有办法保留 DatabaseGeneratedOption 配置,或者我需要删除它并希望实体框架正确地从数据库结构中猜测配置?不起作用的配置看起来像这样:HasKey(e => e.Id).Property(e => e.Id).HasColumnName("Id").HasColumnType("uniqueidentifier").HasDatabaseGeneratedOption( System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None).IsRequired();
2 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
在您的实体中,您可以执行以下操作:
[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int Id { get; set; }
这需要使用 System.ComponentModel.DataAnnotations:
<PackageReference Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Version="2.2.0" />
aluckdog
TA贡献1847条经验 获得超7个赞
解决方案是我为 EF 6.2 存储库层使用 .NET Framework 类库(我使用 v4.7.2 作为目标框架版本)。由于缺少 .NET Framework 依赖项(System.Configuration.ConfigurationManager 和迁移),EF 6.2 无法在 netstandard2.0 类库中工作。
如果将 .NET Core 应用程序的目标框架设置为 .net Framework(例如 net472),则 .NET Core 应用程序可以引用 .NET Framework 类库,但会失去跨平台功能。如果需要跨平台,可以使用 EF Core,尽管这在短期内对我们来说不起作用。
- 2 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消