我使用實體框架(模型第一原則)構建我的應用程序。我還使用MS SQL Server 2008來存儲我的應用程序的所有數據。使用實體框架管理數據庫索引的正確方法
後發展我有下面的代碼的一段時間:
public partial class EventInfo
{
#region Primitive Properties
public virtual int Id
{
get;
set;
}
public virtual string EventName
{
get;
set;
}
public virtual string EventKey
{
get;
set;
}
public virtual System.DateTime DateStamp
{
get;
set;
}
#endregion
}
和Visual Studio數據庫設計器創建的SQL代碼的特殊塊映射該實體數據庫:
-- Creating table 'EventInfoSet'
CREATE TABLE [dbo].[EventInfoSet] (
[Id] int IDENTITY(1,1) NOT NULL,
[EventName] nvarchar(max) NOT NULL,
[EventKey] nchar(32) NOT NULL,
[DateStamp] datetime NOT NULL
);
而且當然,索引爲Id屬性
-- Creating primary key on [Id] in table 'EventInfoSet'
ALTER TABLE [dbo].[EventInfoSet]
ADD CONSTRAINT [PK_EventInfoSet]
PRIMARY KEY CLUSTERED ([Id] ASC);
EventKey是字符串,實際上我用它來存儲md5散列(以字符串表示形式)。但事實是,我主要的代碼如下所示:
int cnt = context.EventInfoSet.Where(e => e.EventKey == eventKey).Count();
和
int cnt = context.EventInfoSet.Where(e => e.EventKey == eventKey && e.DateStamp >= dateFrom && e.DateStamp < dateTo).Count();
eventKey這裏是一個字符串變量。正如你所看到的,我經常處理EventKey屬性。但是我的桌子可能包含大量的記錄(高達5M)。我需要這些代碼儘可能快地工作。我沒有找到任何選項在設計器中將EventKey標記爲索引屬性。我想知道:
- 我該如何讓事情變得更快?做 我不得不擔心我的代碼 ?
- 有什麼溫柔的方式 強制.NET開發 環境自動生成索引字段 自動?
- 如果沒有 溫和的方式,我不得不手動更新它 ,我怎麼能自動組織好東西 做到這一點?
- 可能是你給我一個鏈接到 文章解釋所有這些東西 索引,因爲我的知識缺乏 在這裏。
謝謝!
查看這些其他的[關於EF模型的SO問題](http://stackoverflow.com/questions/3333674/entity-framework-4-add-index-in-model-first-design)一些想法 – 2011-03-22 06:31:32
5M遠非如此,順便說一句。 – 2011-03-22 06:38:26