91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

EF6 秘籍 2th:實體數據建模基礎 (十二)使用條件過濾對象集合

發布時間:2020-06-23 03:45:29 來源:網絡 閱讀:775 作者:tancfeng 欄目:編程語言

問題:

    在實體類型上生成一個永久性的過濾,使其能夠映射為表中記錄的子集。

解決方案:

    有一張保存賬號信息的表,如下圖所示。這個表有一個DeletedOn的可空列,用于保存賬號被刪除的日期和時間。如果賬號仍然是激活的,這個列為空。我們想我們的Account集合僅僅表示激活的賬號,也就是這個賬號沒有DeletedOn值。

    數據庫腳本如下:

create table [Chapter2].[Account]
(
	AccountID int primary key identity(1,1),
	DeletedOn datetime null,
	AccountHolderID int not null
)

    為了建模這張表,使其僅有激活賬號填充Account實體集合,完成下面的步驟:

    1、添加一個新的EDM模型。

    2、選擇來自數據庫的EF設計器。

    3、選擇數據連接。

    4、在數據庫對象和設置對話框中,選擇Account表,并保持默認設置。點擊“完成”。點擊“EF設計器”,選擇屬性,設置“實體容器名”為“EF6Recipes9Context”;并修改名稱空間。

    5、在EF設計器中,右擊Account實體,選擇“表映射”,打開“映射細節”窗口。點擊“添加條件”,選擇DeletedOn列;在操作列,選擇“是”;在值/屬性列,選擇“Null”。這樣就產生了一個映射條件:當DeletedOn為空時。EF6 秘籍 2th:實體數據建模基礎 (十二)使用條件過濾對象集合

    6、在EF設計器中,選中Account實體的DeletedOn屬性,右擊,選擇“刪除”。由于我們正在條件映射中使用DeletedOn列,所以它不能被映射到實體的一個屬性。在我們的模型中DeletedOn始終為Null。

原理:

    當我們想在一個實體上應用永久性過濾時,我們常常使用條件映射。條件映射也是實現TPH繼承的關鍵。可應用的條件有:

    <value> Is Null

    <value> Is Not Null

    <integer> = <value>

    <string> = <value>

            using (var context = new EF6Recipes9Context())
            {
                context.Database.ExecuteSqlCommand(@"insert into chapter2.account(DeletedOn,AccountHolderId) values('2/10/2009',1728)");
                var account = new Account { AccountHolderID = 2320 };
                context.Accounts.Add(account);
                account = new Account { AccountHolderID = 2502 };
                context.Accounts.Add(account);
                account = new Account { AccountHolderID = 2603 };
                context.Accounts.Add(account);
                context.SaveChanges();
            }
            using (var context = new EF6Recipes9Context())
            {
                foreach (var account in context.Accounts)
                {
                    Console.WriteLine("Account Id = {0}", account.AccountHolderID);  
                }
            }

    上面的代碼中,我們首先使用Context的Database屬性的ExecuteSqlCommand方法向數據庫中插入一條記錄。主要是因為我們需要插入一條DeletedOn列為非空值的情況。在我們的模型中沒有這樣的屬性映射的這個列。事實上,Account實體類型從不實例化一個DeletedOn為非空的實例。

    EF6 秘籍 2th:實體數據建模基礎 (十二)使用條件過濾對象集合

    上面的結果并不包含我們最先插入的DeletedOn為非空的記錄。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

皋兰县| 江山市| 佛学| 巨野县| 东平县| 上虞市| 涟水县| 襄垣县| 仲巴县| 西平县| 辽源市| 湟源县| 武穴市| 藁城市| 仙桃市| 威信县| 灯塔市| 梁平县| 平武县| 太保市| 阳曲县| 新郑市| 新丰县| 咸宁市| 获嘉县| 田东县| 田林县| 金乡县| 金溪县| 五大连池市| 海晏县| 湘潭县| 邯郸市| 广昌县| 靖边县| 东至县| 呼伦贝尔市| 镇雄县| 武宁县| 榆中县| 杨浦区|