在我编写的许多应用程序中,我发现自己为 DBML 对象的子类分配了一个默认值。这是我必须这样做的当前方式的示例:
var viewModel = new RandomViewModel
{
ContactName = (Order.Customer != null ? Order.Customer.ContactName : "Unknown"),
Date = Order.OrderDate,
Shipper = (Order.Shipper != null ? Order.Shipper.CompanyName : "Fedex"),
ShipCity = Order.ShipCity,
ShipRegion = Order.ShipRegion,
FirstCategory = (Order.OrderDetails.First().Product.Category != null
? Order.OrderDetails.First().Product.Category.CategoryName
: "DefaultCategory",
ItemCount = Order.OrderDetails.Count
};
理想情况下,它是最易读的:
var viewModel = new RandomViewModel
{
ContactName = Order.Customer.ContactName ?? "Unknown",
Date = Order.OrderDate,
Shipper = Order.Shipper.CompanyName ?? "Fedex",
ShipCity = Order.ShipCity,
ShipRegion = Order.ShipRegion,
FirstCategory =
Order.OrderDetails.First().Product.Category.CategoryName
?? "DefaultCategory",
ItemCount = Order.OrderDetails.Count
};
但是对于任何为空的外键对象,都会出现 NullReferenceException。我不认为 null 合并在这里可用,但是有没有其他简洁的方法来完成这个非常频繁的任务?也许带有类/方法扩展,甚至是 VS 宏?
我在这个例子中使用了 Northwind 数据库:
接受任何和所有建议。