gpt4 book ai didi

c# - 为最小 int 值设置约束

转载 作者:太空狗 更新时间:2023-10-30 00:40:19 24 4
gpt4 key购买 nike

我正在使用存储库模式。我有一个名为 Product 的实体,我想设置价格的最小值以避免零价格。是否可以在 EntitytypeConfiguration 类中创建它?

我的产品配置类

 public class ProductConfiguration : EntityTypeConfiguration<Product>
{
public PlanProductConfiguration(string schema = "dbo")
{
ToTable(schema + ".Product");
HasKey(x => new { x.IdProduct });

Property(x => x.Price).HasColumnName("flt_price")
.IsRequired()
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}
}

最佳答案

如果您需要该约束,您不能通过 EF 配置应用它,但您可以使用 check 应用它,参见 here直接在数据库上,或者您可以在模型上应用数据注释,请参见 SO post

类似于:

[Range(0M, Double.MaxValue)]
public double Price { get; set; }

但是,如果您使用的是 View 模型,那不会有什么不同,因为这些验证仅应用于 ASP.NET 对象创建(通常是在从 Web 请求创建实例到 Controller 时),所以当 创建一个你不必遵守属性的实例,所以如果你想坚定地验证它,你需要应用自定义的getter和setter而不是自动属性,比如:

public class Product
{
private double _price;

[Range(0M, Double.MaxValue)]
public double Price {
get {
return _price;
}
set {
if (value <= 0M) {
throw new ArgumentOutOfRangeException("value",
"The value must be greater than 0.0");
}
_price = value;
}
}
}

只要数据库中没有无效数据,这在 EF 中就可以正常工作。

关于c# - 为最小 int 值设置约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650545/

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