什么是用于 LINQ 的最佳设计模式和 SQL 中存在的类型表。
我在 SQL 中有将值限制为类型值的表,并且我希望能够在我的 C# 代码中将其用作强类型值。
我目前对“PackageStatus”类型的方法如下:
SQL 表
PackageStatusType (int)
desc (varchar)
C# 类 - 使用 LINQ
public class PackageStatusType
{
static PackageStatusType()
{
var lookup = (from p in DataProvider.ShipperDB.PackageStatus
select p).ToDictionary(p => p.Desc);
Unknown = lookup["Unknown"];
LabelGenerated = lookup["Label generated"];
ReadyForCollection = lookup["Ready for pickup"];
PickedUp = lookup["Picked up"];
InTransit = lookup["In Transit"];
DeliveryAttempted = lookup["Delivery attempted"];
DeliveredByHand = lookup["By hand"];
DeliveryFailed = lookup["Delivery failed"];
Delivered = lookup["Delivered"];
Voided = lookup["Voided"];
}
public static ShipperDB.Model.PackageStatus Unknown;
public static ShipperDB.Model.PackageStatus LabelGenerated;
public static ShipperDB.Model.PackageStatus ReadyForCollection;
public static ShipperDB.Model.PackageStatus PickedUp;
public static ShipperDB.Model.PackageStatus InTransit;
public static ShipperDB.Model.PackageStatus DeliveryAttempted;
public static ShipperDB.Model.PackageStatus DeliveryFailed;
public static ShipperDB.Model.PackageStatus Delivered;
public static ShipperDB.Model.PackageStatus DeliveredByHand;
public static ShipperDB.Model.PackageStatus Voided;
}
然后我可以PackageStatusType.Delivered
输入我的 C# 代码,它会正确引用正确的 LINQ 实体。
这很好用,但让我想知道:
a) 我怎样才能提高效率 b) 为什么微软似乎没有提供任何东西来创建强类型表 c) 我的数据库设计甚至是一个好的数据库设计吗?d) 其他人都在做什么!
谢谢!