溫馨提示×

溫馨提示×

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

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

在Visual Studio LightSwitch 2011中引用WCF RIA Service數(shù)據(jù)源

發(fā)布時間:2020-06-18 16:54:10 來源:網(wǎng)絡(luò) 閱讀:1764 作者:桂素偉 欄目:編程語言

在VSLS2011中,對已有數(shù)據(jù)類型提供了三種加載方法,一是SQL Server數(shù)據(jù)庫,一種是SharePoint列表,還有一種就是WCF RIA Service,如下圖:

 

在Visual Studio LightSwitch 2011中引用WCF RIA Service數(shù)據(jù)源

這篇博文就說明一下怎么加載WCF RIA Service。
首先來了解一下本例的數(shù)據(jù)結(jié)構(gòu):
 

在Visual Studio LightSwitch 2011中引用WCF RIA Service數(shù)據(jù)源

寵物主人表和寵物信息表,這間的關(guān)系是一對多。
打開vs2010,創(chuàng)建一個名稱為“Pet_Service”的“WCF RIA Services類庫”項目,在Pet_Service.Web項目中,添加一個“ADO.NET實(shí)體數(shù)據(jù)模型”新項,名稱為“PetModel.edmx”,并且導(dǎo)入數(shù)據(jù)庫中的Pets表和Hosters表(詳細(xì)步驟可查看ADO.NET Entity Framework相關(guān)知識),然后生成一下Pet_Service項目(注意:這里必需生成一下,否則接下的步驟看不到相關(guān)實(shí)體)。然后再選擇Pet_Service.Web項目,添加新項“域服務(wù)類”,命名為“Pet_DS”,在彈出的域服務(wù)類對話框中選中“公開OData終結(jié)點(diǎn)”,并選中上面創(chuàng)建的實(shí)體類,如下圖:
 

在Visual Studio LightSwitch 2011中引用WCF RIA Service數(shù)據(jù)源

單擊“確定”,生成本項目。
在相同解決方案中創(chuàng)建LightSwitch項目“PetManage”,右鍵Data Sources,選擇“Add Data Source…”,選擇“WCF RIA Service”,下一步,在“Attach Data Source Wizard”中,選擇“Add Reference”,選擇“項目”選項卡,選擇“Pet_Service.Web”項目,下一步,并選中“Entities”多選框,完成,就會自動生成兩個數(shù)據(jù)源實(shí)體表“Hoster”和“Pet”。
此時,右鍵“Screen”,添加界面,選擇“Search Data Screen”,“Screen Data”選擇“Pet_DSData.Hoster”,單擊OK,運(yùn)行,查看效果,會發(fā)現(xiàn)界面與數(shù)據(jù)源是沒有連接上的,查詢不出任何數(shù)據(jù),出現(xiàn)這種情況是因為在LightSwitch項目運(yùn)行時,執(zhí)行程序會讀取項目文件夾下的Bin目錄中Debug文件夾下的web.config文件中的WCF RIA Service數(shù)據(jù)源的連接字符串,因為這個連接字符串是在WCF RIA Service下存放,所以這個web.config下放的是<add name="Pet_Service.Web.Pet_DS" connectionString="" />,連接字符串為空,所以造成這個情況的,但如果在這里把WCF RIA Service中的連接字符串考過來,在LightSwitch項目編譯時,會重置connectionString的值,會還原成空值,為了編譯和生成時都能正常調(diào)試,需要在“WCF RIA Service”項目,Pet_DS.cs中添加如下代碼:
        protected override PetManagementEntities CreateObjectContext()
        {
            string constr = ConfigurationManager.ConnectionStrings["Pet_Service.Web.Pet_DS"].ConnectionString;
            if (string.IsNullOrEmpty(constr))
            {
                EntityConnectionStringBuilder Connection = new EntityConnectionStringBuilder();
                Connection.ProviderConnectionString = "data source=服務(wù)器IP;initial catalog=數(shù)據(jù)庫名;user id=用戶名;password=密碼";
                Connection.Provider = "System.Data.SqlClient";
                Connection.Metadata = "res://*/PetModel.csdl|res://*/PetModel.ssdl|res://*/PetModel.msl";
                return new PetManagementEntities(Connection.ToString());
            }
            else
            {
                return new PetManagementEntities(constr);
            }
        }
上面的代碼意思如果取不到配置文件中的連接字符串,就用硬編碼的字符串,這種情況適合在編譯是使用,當(dāng)程序發(fā)布后,添加web.config中的<add name="Pet_Service.Web.Pet_DS" connectionString="" />節(jié)點(diǎn)的連接字符串的值,上面的硬編碼的連接字符串就不起作用了。這樣,就完成了一個LightSwitch連接WCF RIA Service例子了。
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI