SQL に存在する LINQ および型テーブルに使用する最適な設計パターンは何ですか。
値を型の値に制約する 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) 他のみんなは何をしているの?
ありがとう!