UWP SQL Server 迁移无法正常工作

3

我安装了最新版本的Windows 10(秋季创作者更新)和Visual Studio 2017(15.4版)。

我创建了一个面向主要版本的UWP应用程序,并通过Nuget进行了安装:

  • microsoft.entityframeworkcore.tools
  • microsoft.entityframeworkcore.sqlserver

下面是我的代码:

[Table("tbProva")]
public class Prova
{
    public Prova()
    {
        Indirizzi = new List<Indirizzo>();
    }

    [Key]
    public Guid Id { get; set; }

    [MaxLength(250)]
    public string Nome { get; set; }
    public ICollection<Indirizzo> Indirizzi { get; set; }
}

public class ProvaConfig : IEntityTypeConfiguration<Prova>
{
    public void Configure(EntityTypeBuilder<Prova> builder)
    {
        builder.HasMany(c => c.Indirizzi)
            .WithOne(c => c.Prova)
            .HasForeignKey(c => c.IdProva)
            .OnDelete(DeleteBehavior.Cascade);
    }
}

[Table("tbIndirizzi")]
public class Indirizzo
{
    [Key]
    public Guid Id { get; set; }
    [MaxLength(250)]
    public string Strada { get; set; }
    [MaxLength(10)]
    public string Civico { get; set; }
    public Prova Prova { get; set; }
    public Guid IdProva { get; set; }
}

public class DcContext : DbContext
{
    public DbSet<Prova> tbProva { get; set; }
    public DbSet<Indirizzo> tbIndirizzi { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=Europa;Database=ProvaDb;Trusted_Connection=True;");
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.ApplyConfiguration<Prova>(new ProvaConfig());
    }
}

如果我运行迁移,会得到以下结果:
PM> Add-Migration poi 

System.TypeLoadException: Unable to load type 'System.Globalization.CultureInfo' from assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

如果我从模型中删除导航属性并且不覆盖OnModelCreating,它可以正常工作。

谢谢


请务必翻译错误信息。我们并非都使用您的母语 :-) - Mathieu VIALES
好的。System.TypeLoadException:无法加载 System.Runtime、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a 程序集中的 'System.Globalization.CultureInfo' 类型。 - Kraken
2个回答

0

请确保已安装并更新了 System.Globalization NuGet 包。

此外,如果您要使用 EntityFramework,请确保已安装 microsoft.entityframeworkcore 包。


我安装了NuGet包,但仍然遇到相同的错误。我也安装了Microsoft.EntityFrameworkCore。在你的代码中,它能正常工作吗?谢谢。 - Kraken
您可以尝试从项目中删除 /bin 文件夹,然后单击 重新构建解决方案。如果这样不起作用,我不知道 :-/ - Mathieu VIALES
你之前尝试过在UWP中使用EF迁移与SQL Server吗?感谢你的帮助。 - Kraken
我从未使用过UWP,但我使用过EF 5、6和Core,以及迁移和SQL Server。老实说,我能想到的唯一方法就是从您的解决方案中删除每个NuGet程序包,清理它(右键单击解决方案“清理”),关闭Visual Studio并重新安装每个程序包...这就是我上次遇到类似错误时所做的,但不确定是否可以解决您的问题 :-/ - Mathieu VIALES
完成,不起作用。我也尝试创建一个新的UWP应用程序,但没有成功。我创建了一个带有Windows 10 Insider预览版和Visual Studio 2017预览版的虚拟机,但是我得到了相同的错误。谢谢。 - Kraken

0

这应该是一个已知的问题,请参见issue #9666

在测试EF Core 2.0与.NET UWP 6.0时,我们发现有新类型出现了类似的问题。例如: System.TypeLoadException:无法从程序集“System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”中加载类型“System.Globalization.CultureInfo”。 System.TypeLoadException:无法从程序集“System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”中加载类型“System.MarshalByRefObject”。

上述异常的一个例子是DataAnnotations。在您的代码片段中只引用了System.ComponentModel.DataAnnotations命名空间。

而且看起来这个补丁错误已经被批准用于2.0.x补丁。请参见issue #9827


谢谢你的帮助。 - Kraken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接