1 つはサードパーティの API から、もう 1 つはデータベースからの異なるオブジェクトの 2 つのリストがあり、2 つを関係としてリンクしようとしています。理想的には、DBML が外部キーを持つテーブルの関係を作成する方法と同様の効果があります ( Customer.Orders
)。
サードパーティから:
class ApiObject {
public string ID { get; set; }
public string Title { get; set; }
public DateTime CreatedDate { get; set; }
... 30 other properties ...
}
私のデータベースから:
class DbmlObject {
public int ID { get; set; }
public string ApiID { get; set; }
public string OtherString { get; set; }
}
それらは関連していますApiObject.ID == DbmlObject.ApiID
これらをマージしたり、匿名オブジェクトに結合したり(および30以上のプロパティを明示的にリストしたり)したくはありませんがDbmlObject
、リンクされたプロパティをApiObject
. つまり、次のようにアドレス指定
できます。apiObject.DbmlObjects.First().OtherString
理想的apiObject.DbmlObject.OtherString
には、1 対 1 の関係であるためです。
コントローラーで:
List<ApiObject> apiObjects = _thirdParty.GetObjects();
DbmlDataContext model = new DbmlDataContext();
List<DbmlObject> dbmlObjects = model.GetAllDbmlObjects();
// relate them here
foreach (var apiObject in apiObjects)
Console.Write(apiObject.DbmlObject.OtherString)
// NOTE: ideally this foreach loop should not make a DBML query on each iteration, just the single GetAllDbmlObjects query above.