私はApress Pro ASP.NET MVC Frameworkを読んでいますが、いくつかのLINQ to SQLの例がありますが、この例のデータベースは表示されません。私はコミュニティから何らかの明確化を得ることができることを期待しています。エンティティのリストを作成するLINQとSQLのマッピングの関連付け
私の知る限り理解し、データベースにItem
はBid
のリストを持つことができませんので、我々はリストを望んでいたならば、我々は一致ItemID
ですべてBid
秒間Bids
表を問い合せます。本書の例ではItem
とBid
間で確立関連があるように見えますが、私はItems
表はので、私はいくつかの質問持っBid
にそれをリンクする外部キーを持っていないと思われる:
-
を
- アソシエーションは何に基づいていますか?
- LINQは、関連するモデルに基づいて関連付けを行うテーブルを自動的に特定します(この場合、
Bid
はBids
テーブルにマップされます)。 Item
モデルのBids
プロパティに、一致するすべてのBid
が自動的に設定されますか?いいえの場合は、どのように達成できますか?ここで
#2の
[Table(Name="Members")]
public class Member
{
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
internal int MemberID { get; set; }
[Column] public string LoginName { get; set; }
[Column] public int ReputationPoints { get; set; }
}
[Table(Name = "Items")]
public class Item
{
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
public int ItemID { get; internal set; }
[Column] public string Title { get; set; }
[Column] public string Description { get; set; }
[Column] public DateTime AuctionEndDate { get; set; }
[Association(OtherKey = "ItemID")]
private EntitySet<Bid> _bids = new EntitySet<Bid>();
public IList<Bid> Bids { get { return _bids.ToList().AsReadOnly(); } }
}
[Table(Name = "Bids")]
public class Bid
{
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
internal int BidID { get; set; }
[Column] internal int ItemID { get; set; }
[Column] public DateTime DatePlaced { get; internal set; }
[Column] public decimal BidAmount { get; internal set; }
[Column] internal int MemberID { get; set; }
internal EntityRef<Member> _member;
[Association(ThisKey = "MemberID", Storage = "_member")]
public Member Member {
get { return _member.Entity; }
internal set { _member.Entity = value; MemberID = value.MemberID; }
}
}
申し訳ありませんが、私の疑惑を少し編集しました。他の人のために:アダムは私に、LINQ-to-SQLが実際にどのテーブルが実際に関連しているかを(自動的に)知ることができないと考えていることを指摘しています。 – Kiril
@リリック:答えはまだ "はい"です;) –