为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
暮色呼如 2023-07-23 14:05:58
我有一个 .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" />



查看完整回答
反对 回复 2023-07-23
?
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,尽管这在短期内对我们来说不起作用。


查看完整回答
反对 回复 2023-07-23
  • 2 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信