国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 使用Entity Framework(4.3.1版本)遇到的問題整理

使用Entity Framework(4.3.1版本)遇到的問題整理

2019-10-15 10:39asp.net技術網 ASP.NET教程

在這里記錄一下之前使用Entity Framework(4.3.1版本)遇到的問題:更新沒有設置主鍵的表、更改Code-First的默認連接、檢測字符串截斷錯誤,需要的朋友可以參考下

在這里記錄一下之前使用Entity Framework(4.3.1版本)遇到的問題。 
更新沒有設置主鍵的表 
在默認情況下,EF不能對一個沒有主鍵的表進行更新、插入和刪除的動作。用xml方式查看edmx文件,可以在SSDL中可以看到如下xml片斷(我定義了一個沒有主鍵的表tb_WithoutKey)。 

復制代碼代碼如下:


<EntitySet Name="tb_WithoutKey" EntityType="TransferModel.Store.tb_WithoutKey" store:Type="Tables" store:Schema="dbo" store:Name="tb_WithoutKey"> 
<DefiningQuery> 
SELECT 
[tb_WithoutKey].[ID] AS [ID], 
[tb_WithoutKey].[Name] AS [Name] 
FROM [dbo].[tb_WithoutKey] AS [tb_WithoutKey] 
</DefiningQuery> 
</EntitySet> 


我再加入一個有主鍵的表進行對比,同樣的在SSDL中,可以看到有主鍵的表的定義如下。 

復制代碼代碼如下:


<EntitySet Name="tb_WithKey" EntityType="TransferModel.Store.tb_WithKey" store:Type="Tables" Schema="dbo" /> 


我們把沒有主鍵的<EntitySet>照著上面這個節點進行更改:刪除<DefiningQuery>節點,將store:Schema=”dbo”更改為Schema=”dbo”。這樣我們就可以對之前沒有設置主鍵的表進行更新、刪除以及插入操作了。 
無主鍵的表SSDL定義其實更像是視圖,我有一點不明的是store:這個命名空間的作用是什么,為什么只是刪除<DefiningQuery>不行,還需要將Schema屬性的store命名空間刪除才可以。以上都是我還不明白的地方,只是作為一個解決方案,它確實簡單可行。 
更改Code-First的默認連接 
我們知道使用Code-First的時候我們甚至可以不用寫連接字符串,但是這個默認的連接只識別本機的SQL Express版數據庫,如果你是使用其它數據庫甚至就是Sql Server非Express版,都不行。 
在不提供任何連接數據庫信息的情況下,EF會創建一個默認的DefaultConnectionFactory,這個默認的連接工廠使用的就是SqlConnectionFactory,然后我們可以通過reflector看到它的構造函數如下。 
public SqlConnectionFactory() 

this._baseConnectionString = @"Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True"; 

所以說EF默認只能連Sql Express版的數據庫。SqlConnectionFactory提供一個構造函數重載,可以指定連接字符串,修改默認的數據庫連接,我們可以在配置文件中添加以下節點進行配置。 

復制代碼代碼如下:


<entityFramework> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
<parameters> 
<parameter value="Data Source=heqichang-pc; Integrated Security=True; MultipleActiveResultSets=True" /> 
</parameters> 
</defaultConnectionFactory> 
</entityFramework> 


不過不管怎樣,我覺得還是指定好連接字符串來開發比較好,排除各種不可控的因素。 
檢測字符串截斷錯誤 
有時使用EF的時候會出現像以下這樣的錯誤。 
使用Entity Framework(4.3.1版本)遇到的問題整理 
產生這個錯誤的原因一般都是數據庫里設置的字段長度小于你插入的新數據的長度。但是知道原因,要知道具體是哪個字段的長度超出范圍了卻比較困難了,EF給出的信息也不明確,當然,如果數據庫中的字段少,可以很快篩選出來,但是如果表中的字段非常多,那就麻煩了。這個時候我們就可以用到SQL Server自帶的SQL Server Profiler這個工具了(Express版沒有這個工具)。 
假設我有個tb_Test表,里面有個Name字段,類型為varchar(10)。在運行我們錯誤的程序前,先開啟Profiler,選擇好你連接的數據庫開始監控。最后就可以看到我們錯誤的SQL語句了。 
使用Entity Framework(4.3.1版本)遇到的問題整理 
這個工具可以方便的監控到EF運行時對數據庫的操作,注意上圖,該工具會自動分辨出這是來自Entity Framework的請求,然后下邊是具體的SQL語句。 
以上只是我上兩周使用EF時實際遇到的問題總結,在實際中絕對不止上述我遇到的這些問題,歡迎各位園友多多提出哈!

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品视频久久 | 欧美日韩三区 | 亚洲在线精品 | 国产区在线观看 | 特一级毛片 | 亚洲成av人片在线观看无码 | 亚洲三级精品 | 欧美 日韩 | 91亚洲精品在线 | 人人爱人人爽 | 国产精品美女久久久久久久久久久 | 久久中文字幕一区 | 玖玖精品视频 | 91午夜理伦私人影院 | 欧美精品免费在线 | 欧美日本精品 | 日本一区二区三区中文字幕 | 青青草99 | 久久久久国产精品 | 成人免费看黄色 | 在线播放亚洲 | 性色av一区二区三区红粉影视 | 亚洲激情网站 | 国内偷拍av | 日韩欧美在线视频 | 国产精品99久久久久久久vr | www.爱色av.com| 亚洲狠狠爱一区二区三区 | 黄色成人在线 | 精品久久一区 | 欧美精品一区二区久久婷婷 | 欧美日韩中 | 亚洲欧美另类久久久精品2019 | 色播av | 精品日韩一区二区三区 | 一级毛片久久久 | 日本视频在线 | 久久精品亚洲精品 | 欧美一区二区在线视频 | 91电影在线| 麻豆av在线播放 |