【发布时间】:2015-04-16 21:45:07
【问题描述】:
我正在尝试在 C# (.NET 3.5) 中从包含一些嵌套类的类中创建 DataTables 的集合。我基本上得到了一个 JSON 对象,将其解析为 RootObject 的集合,然后最终将其加载到 SQL Server 数据库中。我需要为下面的每个类(期望 RootObject)提供一个表,理想情况下,只有 value(?) 属性在数据表中有一个列。
这是我的类的 sn-p(我的实际类有 5-30 个属性):
public class RootObject
{
[JsonProperty("BaseOrderShipment")]
public BaseOrderShipment BaseOrderShipment { get; set; }
[JsonProperty("BaseOrder")]
public BaseOrder BaseOrder { get; set; }
[JsonProperty("BaseOrderShipmentLineitem")]
public IList<BaseOrderShipmentLineitem> BaseOrderShipmentLineitem { get; set; }
}
public class BaseOrderShipment
{
[JsonProperty("shipment_id")]
public int ShipmentId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
}
public class BaseOrder
{
[JsonProperty("order_id")]
public int OrderId { get; set; }
[JsonProperty("ShippingAddress")]
public ShippingAddress ShippingAddress { get; set; }
[JsonProperty("BillingAddress")]
public BillingAddress BillingAddress { get; set; }
[JsonProperty("Lookup")]
public IList<Lookup> Lookup { get; set; }
}
public class ShippingAddress
{
[JsonProperty("ship_address_id")]
public int ShipAddressId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
}
public class BillingAddress
{
[JsonProperty("bill_address_id")]
public int BillAddressId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
}
public class Lookup
{
[JsonProperty("lookup_id")]
public int LookupId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
}
public class BaseOrderShipmentLineitem
{
[JsonProperty("line_item_id")]
public int LineItemId { get; set; }
[JsonProperty("order_id")]
public int OrderId { get; set; }
[JsonProperty("shipment_id")]
public int ShipmentId { get; set; }
}
我可以将 JSON 解析为 RootObject 的集合:
var obj = ParseOrderShipments(fileName);
public static IList<RootObject> ParseOrderShipments(string fileName)
{
List<RootObject> retObj = JsonConvert.DeserializeObject<List<RootObject>>(File.ReadAllText(fileName));
return retObj;
}
我的第一个想法是遍历 RootObject 类以创建一组空表,然后在我将 JSON 解析为 IList<RootObject> 后填充它们。我的另一个想法是创建DataTable 并立即填充它们。我敢肯定这是有争议的,哪个是更好的方法,所以我愿意接受。
【问题讨论】:
-
您可能想看看NHibernate 和Fluent NHibernate。我认为这些软件包可以自动完成您需要做的事情。嗯,当然需要一些设置。
-
所以为了澄清你想要每个对象的数据表脱离你的根对象?即BaseOrderShipment、BaseOrder、BaseOrderShipmentLineitem