亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用簡介<EntityFramework6.0>

2019-11-14 16:27:30
字體:
來源:轉載
供稿:網友

 

序言

在這一篇中,我們將演示EnitityFramework基本的建模【建模也是EntityFramework最核心的特性】范例,例如實體的分離和繼承等。我們開始了演示如何創建一個簡單的概念模型的例子,然后讓EnitityFramework建立底層數據庫。在余下的例子中,我們將告訴你如何從現有的表和數據庫關系創建模型。

創建一個簡單的Model

1.點擊添加新建項,選擇Data下的ADO.NET實體模型,并選擇空模型。

 2.右鍵選擇新增實體

3.將實體命名為Person,實體集命名為People,添加名為Id,類型為Int32的鍵屬性。

4.添加標量屬性

 

 5.添加標量屬性FirstName. LastName, MiddleName,PhoneNumber,同時指定鍵屬性Id的數據庫生成策略

 6.空白處右鍵-->屬性,修改實體容器名稱為EF6RecipesContext,數據庫架構名稱為article2,這些都是為更好地管理Model做的有意義的動作。

7.右鍵選擇根據模型生成數據庫,選擇創建新的連接,選擇目標數據庫

8.在.edmx文件中生成倉儲模型,并運行數據庫腳本

 它是怎么工作的

using System;namespace EntityFrameworkDemo{    class PRogram    {        static void Main()        {            using (var context=new EF6RecipesContext())            {                var person = new Person                {                    FirstName = "Robert",                    MiddleName = "Allen",                    LastName = "Doe",                    PhoneNumber = "867-5309"                };                context.People.Add(person);                person = new Person                {                    FirstName = "John",                    MiddleName = "K.",                    LastName = "Smith",                    PhoneNumber = "824-3031"                };                context.People.Add(person);                person = new Person                {                    FirstName = "Billy",                    MiddleName = "Albert",                    LastName = "Minor",                    PhoneNumber = "907-2212"                };                context.People.Add(person);                person = new Person                {                    FirstName = "Kathy",                    MiddleName = "Anne",                    LastName = "Ryan",                    PhoneNumber = "722-0038"                };                context.People.Add(person);                context.SaveChanges();            }            using (var context=new EF6RecipesContext())            {                foreach (var person in context.People)                {                    Console.WriteLine("{0} {1} {2}, Phone: {3}",                            person.FirstName, person.MiddleName,                            person.LastName, person.PhoneNumber);                }            }            Console.ReadKey();        }    }}

運行效果

 至于使用using的好處,這里就不多說了,因為這也是最基礎的。下面是書中的解釋片段,不熟悉的同學可以看看

      There are a few nice features of using()statements. First, when the code execution leaves the using() {}block,
the Dispose()method on the context will be called because DbContext implements the IDisposable interface. For
DbContext, the Dispose()method closes any active database connections and properly cleans up any other resources
that need to be released.
     Second, no matter how the code leaves the using(){}block, the Dispose()method is called. Most importantly,
this includes return statements and exceptions that may be thrown within the code block. The using(){}block is kind
of a guarantee that critical resources will be reclaimed properly.
  The best practice here is always to wrap your code in the using(){}block when creating new instances of
DbContext. It’s one more step to help bulletproof your code

 從已存在的數據庫中生成模型

問題

現有一個已存在的數據庫中的表,假設也有一些視圖,已經一些外鍵約束,你想為這個數據庫創建模型

解決方案

你的數據庫中的結構可能是這樣:

首先我們安裝前面的步驟,打開向導,選擇由數據庫生成,并選擇需要操作的表和視圖

點擊完成后,EntityFramework會推斷出Poet和Poem,以及Meter和Poem之間一對多的關系

從模型瀏覽器中我們可以看出一首詩對應一個作者和一個分類,分別對應Poet和Meter導航屬性,如果我們有一個Poem的實體,那么導航屬性Poet也會包含一個詩人的實體的集合【因為是一對多的關系】,同理Meter也是如此。因為SQLSERVER不支持在視圖上定義關系,因此vwLiberary上市一組空的導航屬性

它是怎么工作的

using (var context = new EF6RecipesEntities())            {                var poet = new Poet {FirstName = "John", LastName = "Milton"};                var poem = new Poem {Title = "Paradise Lost"};                var meter = new Meter {MeterName = "Iambic Pentameter"};                poem.Meter = meter;                poem.Poet = poet;                context.Poems.Add(poem);                poem = new Poem {Title = "Paradise Regained", Meter = meter, Poet = poet};                context.Poems.Add(poem);                poet = new Poet {FirstName = "Lewis", LastName = "Carroll"};                poem = new Poem {Title = "The Hunting of the Shark"};                meter = new Meter {MeterName = "Anapestic Tetrameter"};                poem.Meter = meter;                poem.Poet = poet;                context.Poems.Add(poem);                poet = new Poet {FirstName = "Lord", LastName = "Byron"};                poem = new Poem {Title = "Don Juan", Meter = meter, Poet = poet};                context.Poems.Add(poem);                context.SaveChanges();            }            using (var context = new EF6RecipesEntities())            {                var poets = context.Poets;                foreach (var poet in poets)                {                    Console.WriteLine("{0} {1}", poet.FirstName, poet.LastName);                    foreach (var poem in poet.Poems)                    {                        Console.WriteLine("/t{0} ({1})", poem.Title, poem.Meter.MeterName);                    }                }            }             // using our vwLibrary view            using (var context = new EF6RecipesEntities())            {                var items = context.vwLibraries;                foreach (var item in items)                {                    Console.WriteLine("{0} {1}", item.FirstName, item.LastName);                    Console.WriteLine("/t{0} ({1})", item.Title, item.MeterName);                }            }

 

運行效果

我們使用SQLSERVER profile監視這段代碼的執行情況發現,并不是執行完var poets = context.vwLibraries;就立即去數據庫中抓取數據,而知在執行foreach的時候才去查詢之后將結果存放在內存中對數據進行不經過數據庫直接從中讀取,總之當前可以認為它是用到的時候才去執行,詳細的流程待后續學習在進行總結。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美国产制服动漫| 亚洲精品美女在线| 日韩av免费在线看| 欧美又大又硬又粗bbbbb| 超碰97人人做人人爱少妇| 韩国国内大量揄拍精品视频| 国产在线不卡精品| 97久久精品视频| 中文字幕精品一区久久久久| 国产亚洲精品成人av久久ww| 亚洲精品黄网在线观看| 色悠悠国产精品| 亚洲免费伊人电影在线观看av| 91美女片黄在线观| 亚洲爱爱爱爱爱| 久久人人爽亚洲精品天堂| 亚洲欧美日韩图片| 91亚洲国产成人精品性色| 日韩av一卡二卡| 欧美巨猛xxxx猛交黑人97人| 亚洲娇小xxxx欧美娇小| 欧美性生交大片免网| 永久免费毛片在线播放不卡| 国产激情综合五月久久| 国产精品美女久久| 97人洗澡人人免费公开视频碰碰碰| 在线视频精品一| 国产激情久久久久| 欧美日韩中文字幕综合视频| 日韩精品免费视频| 国产精品一区久久久| 中文字幕亚洲无线码a| 精品国产一区二区三区久久久| 亚洲成人黄色网| 日本欧美精品在线| 久久五月天综合| 亚洲女人天堂av| 午夜精品久久久久久久99黑人| 国产精品久久久久999| 色久欧美在线视频观看| 在线视频日韩精品| 日韩中文字幕网站| 亚洲黄色www网站| 91九色蝌蚪国产| 在线观看国产精品日韩av| 68精品国产免费久久久久久婷婷| 4444欧美成人kkkk| 精品视频—区二区三区免费| 欧美综合一区第一页| 一本色道久久88精品综合| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品久久久久久av福利软件| 亚洲免费高清视频| 亚洲第一免费网站| 国产日韩欧美成人| 日本精品视频在线| 亚洲成色999久久网站| 91香蕉亚洲精品| 中文字幕精品久久久久| 亚洲精品国产综合久久| 国产深夜精品福利| 国产中文日韩欧美| 日韩av在线不卡| 日韩av在线网页| 日韩精品极品视频| 在线播放国产一区中文字幕剧情欧美| 久久影院中文字幕| 欧美在线视频免费播放| 欧美国产日韩精品| 成人高h视频在线| 国产成人亚洲综合91| 国产ts人妖一区二区三区| 韩国三级电影久久久久久| 69国产精品成人在线播放| 亚洲欧美在线一区| 亚洲精品videossex少妇| 国产精品96久久久久久又黄又硬| 日韩成人性视频| 亚洲国产中文字幕久久网| 超碰日本道色综合久久综合| 2019av中文字幕| 富二代精品短视频| 欧美日韩亚洲视频| 亚洲视频axxx| 欧美国产日韩视频| 久久精品国产91精品亚洲| 一夜七次郎国产精品亚洲| 91国产在线精品| 国产精品美女999| 欧美精品一区在线播放| 欧美精品videosex牲欧美| 日韩视频在线一区| 亚洲一区二区三区sesese| 国产精品白嫩美女在线观看| 欧美激情亚洲另类| 亚洲一区二区三区视频播放| 成人精品一区二区三区电影免费| 午夜精品久久久久久久男人的天堂| 国产福利精品av综合导导航| 国产欧美日韩精品丝袜高跟鞋| 亚洲xxxxx性| 国产精品日韩精品| 亚洲欧美综合精品久久成人| 亚洲人成在线免费观看| 国产欧美在线看| 中文字幕9999| 在线视频免费一区二区| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品视频白浆免费视频| 日韩av影视综合网| 国产午夜精品视频免费不卡69堂| 亚洲天堂网在线观看| 国产美女91呻吟求| 国外成人在线直播| 欧美极品美女视频网站在线观看免费| 欧美激情久久久| 亚洲精品美女久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 粉嫩av一区二区三区免费野| 日本19禁啪啪免费观看www| 中文字幕亚洲专区| 国产精品一区二区久久国产| 日韩av三级在线观看| 一本一道久久a久久精品逆3p| 激情久久av一区av二区av三区| 日韩av网站导航| 亚洲欧美在线免费观看| 国产欧美日韩中文| 欧美激情精品久久久久久| 亚洲天堂视频在线观看| 伊人久久免费视频| 亚洲欧美日韩在线一区| 中文字幕精品久久久久| 日韩成人激情在线| 国产精品久久久久久久久影视| 国产精品网站视频| 91久久久在线| 一区二区在线免费视频| 清纯唯美亚洲综合| 欧美激情中文字幕在线| 日韩在线激情视频| 欧美激情亚洲国产| 91在线看www| 精品久久久久久久久久久久久久| 亚洲国产成人精品女人久久久| 久久精品国产成人| 成人性教育视频在线观看| 久久精品亚洲94久久精品| 国产日韩欧美夫妻视频在线观看| 色综合久久88色综合天天看泰| 久久深夜福利免费观看| 九九热99久久久国产盗摄| 久久精品91久久久久久再现| 国产欧美日韩免费看aⅴ视频| 精品在线观看国产| 欧美激情喷水视频| 国产综合在线看| 久久久免费电影| 欧美性在线观看| 国产精选久久久久久| 免费91麻豆精品国产自产在线观看| 亚洲最大福利视频| 自拍偷拍亚洲欧美| 国产精品久久久久不卡|