私は次のモデルを持っています:
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'.
誰かがこの問題を解決する方法を知っていますか、私は答えを探してみましたが、ほとんどの解決策はそれをnull不可にし、ゼロを受け入れることですが、ゼロ値を使用する必要があるため、これを行いたくありませんいくつかのフィールド
アップデート
これをさらに試した後、更新が実行されるもののリストにこれを絞り込みました:d.PORT
行から除外した場合
d => new { d.ProfileName, d.IPAD, d.PORT, d.IsActive }
その後、更新は正常に機能します。確かに、更新時にこのフィールドも確認する方法が必要です。そうでない場合、null 許容 int のような単純なものさえ処理できない場合、mvc の使用はかなり役に立たないようです。