当流畅配置使用 HasDatabaseGenerateOption 时,如何将实体框架项目迁移到

我有一个 .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();


暮色呼如
浏览 155回答 2
2回答

POPMUISE

在您的实体中,您可以执行以下操作:&nbsp;&nbsp;&nbsp;&nbsp;[Key] &nbsp;&nbsp;&nbsp;&nbsp;[DatabaseGenerated(DatabaseGeneratedOption.None)] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;Id&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}这需要使用 System.ComponentModel.DataAnnotations:&nbsp;&nbsp;&nbsp;&nbsp;<PackageReference&nbsp;Include="Microsoft.AspNetCore.Mvc.DataAnnotations"&nbsp;Version="2.2.0"&nbsp;/>

aluckdog

解决方案是我为 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,尽管这在短期内对我们来说不起作用。
打开App,查看更多内容
随时随地看视频慕课网APP