gpt4 book ai didi

entity-framework - 类型 Nullable 和 Int32 之间未定义二元运算符 Equal

转载 作者:行者123 更新时间:2023-12-04 02:26:33 24 4
gpt4 key购买 nike

我有以下模型:

public class DeviceConfigurationModel
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[Display(Name = "Device Configuration Id")]
public int DeviceConfigurationId { get; set; }

[Required]
[Display(Name = "Device Profile Name")]
[StringLength(50)]
public string ProfileName { get; set; }

[StringLength(50)]
public string SERV { get; set; }

[StringLength(50)]
public string IPAD { get; set; }

public Nullable<int> PORT { get; set; }

[Required]
[Display(Name = "Is Active")]
public bool IsActive { get; set; }

[Required]
[Display(Name = "Date Created")]
public DateTime DateCreated { get; set; }
}

我使用命令 update-database 通过包管理器控制台播种以及 configuration.cs 中用于迁移的以下代码:
    context.DeviceConfigurations.AddOrUpdate(
d => new { d.ProfileName, d.IPAD, d.PORT, d.IsActive },
new DeviceConfigurationModel { ProfileName = "FMG Default Gateway", IPAD = "77.86.28.50", PORT = (int?)90, IsActive = true }
);

但是,每当它尝试运行这行代码时,我都会在控制台中收到以下错误:
The binary operator Equal is not defined for the types 'System.Nullable`1[System.Int32]' and 'System.Int32'.

有谁知道如何解决这个问题,我曾尝试寻找答案,但大多数解决方案是使其不可为空并只接受零,但我不想这样做,因为我需要使用零值一些领域

更新

进一步研究后,我将范围缩小到运行更新的内容列表:如果我省略了 d.PORT从线
d => new { d.ProfileName, d.IPAD, d.PORT, d.IsActive }

然后更新工作正常。当然必须有一种方法可以让更新也查看这个字段,否则如果它甚至不能处理像可为空的 int 这样的简单事情,那么使用 mvc 似乎是非常无用的

最佳答案

尝试使用 Fluent API 将字段显式设置为 Optional:

 public class YourContext : DbContext
{
public DbSet<DeviceConfigurationModel> DeviceConfigurations { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<DeviceConfigurationModel>().Property(x => x.PORT).IsOptional();
}
}

这应该强制类型可以为空。

出于某种原因,将您的属性(property)声明为 int?而不是 Nullable<int>将导致 EF 也按预期生成您的属性(property)。

关于entity-framework - 类型 Nullable<Int32> 和 Int32 之间未定义二元运算符 Equal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16818382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com