私は以下のような2つのモデルを持っています
public class FItem
{
public FItem() { }
public int RecordId { get; set; }
public int MarketId { get; set; }
public string ItemName { get; set; }
public string ItemFamily { get; set; }
public string HoverFamily { get; set; }
public string ItemDesc { get; set; }
public IEnumerable<FSubsystem> FSubsystems { get; set; }
}
public class FSubsystem
{
public FSubsystem() { }
public int FSubsystemId { get; set; }
public int RecordId { get; set; } //Foreign key
public int supplierId { get; set; }
public int SubSystemTypeId { get; set; }
public double Percentage { get; set; }
public double? Value { get; set; }
}
public class FReferences
{
public FReferences() { }
public int RecordID { get; set; } //Foreign key
public int SourceID { get; set; }
public DateTime SourceDate { get; set; }
public string Reference { get; set; }
public int? ReferenceID { get; set; }
}
そして、dapperを使用してデータをフェッチし、オブジェクトに配置します。コードはbelolwと同じです
using (var multi = mapperConnection.QueryMultiple("USP_FetchMarketRecords", parameters, (SqlTransaction)null, 1000000, CommandType.StoredProcedure))
{
IEnumerable<MarketRecord.FItem> FItem = multi.Read<MarketRecord.FItem>().ToList();
IEnumerable<MarketRecord.FSubsystem> FSubsystem = multi.Read<MarketRecord.FSubsystem>().ToList();
}
次に、各レコードIDのサブシステムを取得し、それらをFitemのFSubsystemsプロパティに配置します。これどうやってするの ?
ここでは、FサブシステムであるFItemとの1対多の関係のみを示しています。しかし、FReferenc、FUnitなどのFitemには1対多のテーブルがたくさんあります。すべての外部キーはRecordIditelfです。
これは、linqクエリを介して実行できますか?または、いくつかの差分手法を使用する必要がありますか?