[英]LINQ to SQL mapping associations to create a list of entities
我正在閱讀Apress Pro ASP.NET MVC框架,並且有一些LINQ to SQL示例,但是它們沒有顯示此示例的數據庫,並且尚不清楚它是如何工作的,因此我希望我可以從社區。
據我了解,在數據庫中,一個Item
不能包含Bid
的列表,因此,如果我們想要該列表,我們將在Bids
表中查詢所有具有匹配ItemID
的Bid
。 在這本書的示例中,看起來在Item
和Bid
之間建立了關聯,但是我懷疑Items
表沒有將其鏈接到Bid
的外鍵,因此我有幾個問題:
Bid
映射到Bids
表)? Bid
自動填充Item
模型的Bids
屬性? 如果否,那么如何實現? 這是例子
[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; }
}
}
您對#2的懷疑是不正確的; 實際上,LINQ-to-SQL(像大多數ORM一樣) 確實知道哪個表具有實際的關聯。 父子關系可以在關聯的兩側具有導航屬性。
這些會自動處理。 至於填充屬性,這將在顯式加載時或在訪問屬性時(如果啟用了延遲加載)發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.