欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

DataRabbit 輕量的數據訪問框架(04) -- IEn

系統 2052 0
(完全限定類名: DataRabbit.ORM.IEntityRelationLoader

在DataRabbit框架提供的ORM功能之中,除了IOrmAccesser接口展現的核心ORM功能外,IEntityRelationLoader接口也提供了一些有意義的功能。正如其名,IEntityRelationLoader是通過數據表的主外鍵關系來加載當前Entity的Parent和Children。

現在對我們前面示例經常用到的Student數據表做個擴充,假設,Student表的MentorID字段作為外鍵,指向Mentor表;而且,Book表中的StudentID字段也是外鍵,指向Student表。這種主外鍵關系的含義是:“一個學生有一個導師,并且擁有多本書”。這三個表的關系圖如下所示:
DataRabbit 輕量的數據訪問框架(04) -- IEntityRelationLoader
通過對Student擴充后,我們可以為Student Entity Class 加上如下兩個屬性,來反映這種關系:
#region Mentor
[ NonSerialized ]
private Mentor m_Mentor = null ;
public Mentor Mentor
{
get
{
return this .m_Mentor;
}
set
{
this .m_Mentor = value;
}
}
#endregion

#region BookList
[ NonSerialized ]
private IList < Book > m_BookList = null ;
public IList < Book > BookList
{
get
{
return this .m_BookList;
}
set
{
this .m_BookList = value;
}
}
#endregion
我將這種通過主外鍵關系得到的屬性稱為“FamilyRelation”屬性,如果使用 EntityCreator 工具生成Entity Class,這些屬性都會根據數據表關系而自動生成。

現在,我們來調用如下語句:
Studentstudent = stuOrmAccesser.GetOne( new Filter (Student._ID, 30 ));
結果會發現,返回的student對象的Mentor屬性和BookList屬性不會被填充。如果不使用IEntityRelationLoader接口,而是直接通過IOrmAccesser來獲取這個student的“Family”,我們需要這樣做:
Student student = stuOrmAccesser.GetOne( new Filter (Student._ID, 30 ));
student.Mentor
= stuOrmAccesser.GetParent < Mentor > (student);
student.BookList
= stuOrmAccesser.GetChildList < Book > (student);
像這樣子可以達到目的,但是未免繁瑣了一點,如果Student表有多個外鍵,則我們就要調用多次GetParent()方法來分別獲取各個Parent;對于多個Children,也是如此。IEntityRelationLoader接口使得這種基于關系的加載變得非常簡單,如上述功能使用下面的代碼即可實現:
entityRelationLoader. LoadFamily (student);
LoadFamily 方法一次調用可以加載當前student對象的所有“Family”成員(注意,這里的加載“Family”只包括加載自己Parent和Children,而不包括更上的grandfather或更下的grandson等)。

我們可以從DataRabbit的入口點 IDataAccesser 接口獲取IEntityRelationLoader引用:
IEntityRelationLoader entityRelationLoader = dataAccesser.GetEntityRelationLoader( null );

通過上面的示例,我們對IEntityRelationLoader的功能已經有了一些了解。下面我們來看看這個接口的全貌:
public interface IEntityRelationLoader : ITransactionAccesser
{
/// <summary>
/// LoadChildren加載自己的children到對應的屬性字段(如果Entity提供了這些屬性字段,并且屬性可寫)上。
/// </summary>
void LoadChildren( object entity);

/// <summary>
/// LoadParents加載自己的parents到對應的屬性字段(如果Entity提供了這些屬性字段,并且屬性可寫)上。
/// </summary>
void LoadParents( object entity);

/// <summary>
/// LoadFamily加載自己的parents和children到對應的屬性字段(如果Entity提供了這些屬性字段,并且屬性可寫)上。
/// </summary>
void LoadFamily( object entity);

/// <summary>
/// LoadOffspring以當前entity為根,加載所有后代。注意,自己以及后代的所有Parent屬性都不會被賦值。
/// </summary>
void LoadOffspring( object entity);
}



轉到: DataRabbit 輕量的數據訪問框架 -- 序


DataRabbit 輕量的數據訪問框架(04) -- IEntityRelationLoader


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99久久精品免费看国产一区二区 | 在线观看91精品国产入口 | 亚洲啊v在线观看 | 久久久无码精品一区二区三区 | 国产精品久久久久一区二区 | 国产成人在线观看免费网站 | 91成人在线免费 | 成人性大片免费观看网站 | 草比网站 | 99热在线免费 | 国产精品无码永久免费888 | aaaaa国产毛片 | 欧美狠狠操 | 久久高清| 亚洲免费在线 | 精品96久久久久久中文字幕无 | 五月婷婷六月爱 | 欧美精品 在线观看 | 亚洲午夜视频在线观看 | 欧美精品播放 | 日韩精品一区二区三区中文字幕 | 成人国产精品免费视频不卡 | 99这里只有精品视频 | 久久就是精品 | 精品一区二区视频 | 日韩亚洲欧美中文高清在线 | 久草8| 精品美女在线观看视频在线观看 | 日韩精品亚洲人成在线播放 | 日韩一区二区免费视频 | a级粗大硬长爽猛视频免费 潘金莲强完整版 | 日本在线综合 | 成人伊人 | 91国在线国内在线播放 | 色综合久久久 | 狠狠色噜噜狠狠狠97影音先锋 | 久久在线中文字幕 | jizzjizzjizzjizz日本 | 久久99精品亚洲热综合 | 中文字幕精品视频 | 欧美日韩中文一区 |