我有一个字段,表明某人是否有佣金或费用。
在sql中它会变成一个字段。
我该如何命名?
答案 0 :(得分:12)
您可能希望使用枚举而不是布尔值。
public enum Payment
{
Commission = 0,
Fee = 1
}
然后,您可以在必要时将其强制转换为整数。
class Thing
{
Payment ThingPayment { get; set; }
}
var thing = new Thing();
thing.ThingPayment = Payment.Fee;
int bitValue = (int)thing.ThingPayment;
答案 1 :(得分:2)
最简单的方法是将其称为IsCommission
(或IsFee
)。在C#中,布尔属性通常应以'Is'或'Has'开头,除非该名称已经暗示了布尔特性。如果以后有可能将其他值添加到等式中,请认真考虑将其作为枚举。在这种情况下,你可以称之为CompensationMethod,但那里有很多好的名字。如果您决定坚持使用布尔值,如果您的数据库字段保持布尔值,那么这可能是个好主意,您可以像这样公开您的属性的反转:
protected bool isCommission
public bool IsCommission
{
get { return isCommission; }
set { isCommission = value; }
}
public bool IsFee
{
get { return !isCommission; }
set { isCommission = !value; }
}
答案 2 :(得分:1)
My 2 rappen,我会用“IsFee”扩展属性来解释它。
然而,冒着YAGNI的风险,会有其他类型吗?如“转分保”或“持有费”而不是“支付费”。在这种情况下,tinyint会在SQL中查找另一个表。
如上所述,使用c#枚举可以简化操作。
答案 3 :(得分:1)
我会犹豫不决。你有一对多的关系,巧合的是有两个可能的值。但未来可能会有更多的关系价值观。如果有问题的金额少于一定的固定金额,有人可能免费工作,或者需要收费和佣金,或者收取固定费用。
而是使用关系表来保存值。最终,您将为您的设计提供更大的灵活性。您还可以避免在代码中存储任何常量。