第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

實(shí)體框架和SQL Server視圖

實(shí)體框架和SQL Server視圖

慕尼黑8549860 2019-08-09 16:13:07
實(shí)體框架和SQL Server視圖由于幾個(gè)我無權(quán)談?wù)摰脑?,我們?cè)赟ql Server 2005數(shù)據(jù)庫(kù)中定義了一個(gè)視圖,如下所示:CREATE VIEW [dbo].[MeterProvingStatisticsPoint]ASSELECT     CAST(0 AS BIGINT) AS 'RowNumber',     CAST(0 AS BIGINT) AS 'ProverTicketId',     CAST(0 AS INT) AS 'ReportNumber',     GETDATE() AS 'CompletedDateTime',     CAST(1.1 AS float) AS 'MeterFactor',     CAST(1.1 AS float) AS 'Density',     CAST(1.1 AS float) AS 'FlowRate',     CAST(1.1 AS float) AS 'Average',     CAST(1.1 AS float) AS 'StandardDeviation',     CAST(1.1 AS float) AS 'MeanPlus2XStandardDeviation',     CAST(1.1 AS float) AS 'MeanMinus2XStandardDeviation'WHERE 0 = 1我們的想法是,實(shí)體框架將基于此查詢創(chuàng)建一個(gè)實(shí)體,但它會(huì)生成一個(gè)包含以下內(nèi)容的錯(cuò)誤:警告6002:表/視圖'Keystone_Local.dbo.MeterProvingStatisticsPoint'沒有定義主鍵。已推斷密鑰,并將定義創(chuàng)建為只讀表/視圖。并且它決定CompletedDateTime字段將是此實(shí)體主鍵。我們正在使用EdmGen生成模型。有沒有辦法不讓實(shí)體框架包含此視圖的任何字段作為主鍵?
查看完整描述

3 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

我們遇到了同樣的問題,這就是解決方案:

要強(qiáng)制實(shí)體框架使用列作為主鍵,請(qǐng)使用ISNULL。

要強(qiáng)制實(shí)體框架不使用列作為主鍵,請(qǐng)使用NULLIF。

一種簡(jiǎn)單的方法是將視圖的select語句包裝在另一個(gè)select中。

例:

SELECT
  ISNULL(MyPrimaryID,-999) MyPrimaryID,
  NULLIF(AnotherProperty,'') AnotherProperty  FROM ( ... ) AS temp


查看完整回答
反對(duì) 回復(fù) 2019-08-09
?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊

但在大多數(shù)情況下,它會(huì)破壞SQL優(yōu)化器,它不會(huì)使用正確的索引。

這對(duì)某些人來說可能是顯而易見的,但是我花了幾個(gè)小時(shí)使用Tillito解決方案來解決性能問題。讓我們說你有桌子:

 Create table OrderDetail    (  
       Id int primary key,
       CustomerId int references Customer(Id),
       Amount decimal default(0)
    );
 Create index ix_customer on OrderDetail(CustomerId);

你的觀點(diǎn)是這樣的

 Create view CustomerView    As
      Select 
          IsNull(CustomerId, -1) as CustomerId, -- forcing EF to use it as key
          Sum(Amount) as Amount      From OrderDetail      Group by CustomerId

Sql優(yōu)化器不會(huì)使用索引ix_customer,它會(huì)對(duì)主索引執(zhí)行表掃描,但是如果不是:

Group by CustomerId

你用

Group by IsNull(CustomerId, -1)

它將使MS SQL(至少2008年)包括正確的索引到計(jì)劃中。

如果


查看完整回答
反對(duì) 回復(fù) 2019-08-09
  • 3 回答
  • 0 關(guān)注
  • 584 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)