中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

EF架(jia)構(gou)~為IEnumerable接口添加增(zeng)刪(shan)查等操(cao)作,原因是(shi)IEnumerable導航屬性(xing)更放心

回到目錄

對EF開發(fa)來說(shuo),導航屬(shu)性(xing)肯定都用過,事實上,它是(shi)由VS IDE工具(ju)根據(ju)你的(de)(de)(de)數據(ju)庫關(guan)(guan)系結構(gou)自(zi)動(dong)(dong)生成的(de)(de)(de)外鍵屬(shu)性(xing),在類(lei)視圖中可以看到相關(guan)(guan)屬(shu)性(xing),它是(shi)以外鍵表名(ming)來標識的(de)(de)(de),如果是(shi)一對多的(de)(de)(de)關(guan)(guan)系,那么,它會為屬(shu)性(xing)加上ICollection泛型集合用來標識,而今(jin)天我們(men)要說(shuo)的(de)(de)(de)當(dang)(dang)然不是(shi)自(zi)動(dong)(dong)生成的(de)(de)(de),而是(shi)手動(dong)(dong)加的(de)(de)(de)屬(shu)性(xing),這樣(yang)屬(shu)性(xing)需要我們(men)手動(dong)(dong)進(jin)行join,然后把它按(an)需賦值,而使(shi)用include當(dang)(dang)然是(shi)無效的(de)(de)(de),呵呵。

一般(ban)地(di),我們(men)習慣(guan)上把集(ji)(ji)合屬性定(ding)義為List<T>,但是(shi)(shi),對于linq to entities來(lai)說,這(zhe)個東西并不是(shi)(shi)很受歡迎,而(er)標準結(jie)果(guo)集(ji)(ji)大(da)家都(dou)知道是(shi)(shi)IEnumerable<T>,它是(shi)(shi)所(suo)有集(ji)(ji)合的(de)基類(lei),自身只提(ti)供了集(ji)(ji)合遍歷(li)的(de)方法,這(zhe)也是(shi)(shi)我們(men)不用(yong)它作為導航屬性的(de)原(yuan)因,因為我們(men)一般(ban)需(xu)要為導航集(ji)(ji)合賦(fu)值的(de),而(er)使用(yong)IEnumerable賦(fu)值就比較麻煩(fan),需(xu)要借(jie)助List等集(ji)(ji)合。

引(yin)入IEnumerable的原因主要是List無(wu)法實現一個復雜的查詢,如圖:

這個查詢返回一個派生類(lei)型,下面的復雜查詢將會用(yong)到上面的結果(guo),而這時,List類(lei)型的導航屬性將是不被允許(xu)的

我們通(tong)過(guo)監視器(qi)可以(yi)看到,查詢返回的(de)默認是IEnumerable,所(suo)以(yi),我們要屬性(xing)改為(wei)IEnumerable,結(jie)果當(dang)然是正常(chang)的(de)

而我們之前不(bu)用IEnumerable的原因(yin),就是(shi)因(yin)為它的方(fang)法太(tai)單調了(le),沒有添加,移(yi)除,查找等方(fang)法,而這(zhe)時,不(bu)用它又(you)不(bu)行,所以,只能把它進行擴展了(le),呵呵

擴展方法如下:

/// <summary>
    /// IEnumerable接(jie)口的擴展方法(fa),支持它的實現(xian)類是(shi)List的情(qing)況
    /// </summary>
    public static class IEnumerableExtensions
    {
        /// <summary>
        /// 向集合中(zhong)添加(jia)元(yuan)素
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collection"></param>
        /// <param name="value"></param>
        public static void Add<T>(this IEnumerable<T> collection, T value)
        {
            (collection as List<T>).Add(value);
        }
        /// <summary>
        /// 從集合中(zhong)刪除元素
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collection"></param>
        /// <param name="value"></param>
        public static void Remove<T>(this IEnumerable<T> collection, T value)
        {
            (collection as List<T>).Remove(value);
        }
        /// <summary>
        /// 檢索(suo)集合中是否包含某個元(yuan)素
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collection"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool Contains<T>(this IEnumerable<T> collection, T value)
        {
            return (collection as List<T>).Contains(value);
        }
    }

調用也(ye)是(shi)十分簡單,和List類型的一樣樣,呵(he)呵(he),舒(shu)服!

回到目錄

posted @ 2013-10-28 17:50  張占嶺  閱讀(4854)  評論(0)    收藏  舉報