![](/img/trans.png)
[英]How to get custom SQL Server type into Entity Framework generated code
[英]Entity Framework How to specify paramter type in generated SQL (SQLServer 2005) Nvarchar vs Varchar
在實體框架中,我有一個從數據庫生成的實體“客戶端”。 有一個名為“帳戶”的屬性,它在存儲模型中定義為:
<Property Name="Account" Type="char" Nullable="false" MaxLength="6" />
在概念模型中為:
<Property Name="Account" Type="String" Nullable="false" />
當使用 Account 變量生成 select 語句時,即
where m.Account == myAccount...
實體框架使用 NVarchar(6) 類型的參數生成參數化查詢。 問題是表中的列是char(6)的數據類型。 執行此操作時,由於數據類型差異,性能會受到很大影響。 帳戶是表上的索引,我相信索引掃描已完成,而不是使用索引。
任何人都知道如何強制 EF 不使用 Unicode 作為參數並使用 Varchar(6) 代替?
我想我找到了自己問題的答案。 這里http://blogs.msdn.com/b/adonet/archive/2010/05/10/improvements-to-generated-sql-in-net-4-0.aspx
它討論了對 EF 4.0 中生成的 sql 的改進。 具體說
提供對非 Unicode 列進行高效查詢的機制
在 .NET 3.5 中,每當在 LINQ to Entities 查詢中使用常量或參數時,我們都將其視為 Unicode。 因此,當將常量與存儲在 SQL Server 上的非 unicode 列中的屬性進行比較時,如果該列上有索引,則不會使用它。
為了解決這個問題,我們現在在 LINQ to Entities 查詢中使用非 unicode 常量和參數與非 unicode 列進行比較時生成這些常量和參數。
我想我需要升級。
該字段的屬性窗口有 3 個屬性可以滿足您的要求,即固定長度、最大長度和 Unicode,當您在設計器中選擇適當的字段時,它們位於屬性窗口的 Facets 組中。
我目前正在研究 EF4,但不確定這些是否存在於 EF 的先前版本中。
它應該最終在 XML 中看起來像這樣。
<Property Name="Account" Type="String" MaxLength="6" Unicode="false" FixedLength="true" Nullable="false" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.