惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - RicoRui

【转让】看看有你喜欢的书籍嘛?--都是我翻过的。 TFS --- GrantBackup Plan Permissions Error 用户界面草图设计工具-工具包和资源 IIS URL Rewrite Model & ASP.NET Route Component ‘s Diff Entity Framework 4 & 4.1 Script# C# + Html5 =C3 [转]qUIpt:JavaScript Cache Library Project Calculation Rules Proposal for Delayed Script Execution 10个有用的网站访问分析工具 20个免费的seo页面分析工具 网站流量统计定义 Minify JavaScript On the Fly Agile -- Scrum Resource UML with VS2010 Ultimate [转]探究TFS 2010中的测试功能 技术债务 Windows Phone 7 Jump Start
[转] LINQ Method cannot be translated into a store expression.
RicoRui · 2011-07-13 · via 博客园 - RicoRui

LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression.

This is a shortcomming of LINQ to Entities, and indeed the ADO.NET Entity Framework at the current release! The reason for a similar exception message is that in queries on the Entity Framework, custom methods and extensions methods cannot be translated into store expressions.

There are workarounds to still enjoy LINQ to Entities and as an example please read the following:

My example uses the AdventureWorksDB database which can be downloaded from http://www.codeplex.com. I’ve generated the Entity Data Model from the database (in case you wish to replicate this behavior). The scenario is the following: I have a TextBox and a Button on a form and I want to print the name of the Contact by entering the ContactID into the TextBox.

1.<div>

2.    <asp:Label ID="lblContactID" runat="server"

3.               AssociatedControlID="txtContactID">ContactID:</asp:Label>

4.    <asp:TextBox ID="txtContactID" runat="server"></asp:TextBox>

5.    <asp:Button ID="btn" runat="server" Text="Search" OnClick="btn_Click" />

6.   

7.    <asp:Label ID="lblContactName" runat="server"></asp:Label>

8.</div>

The obvious thing to do is to apply a Where clause on an EntityCollection and filtering everything on the ContactID given in the txtContactID TextBox. If you use Convert.ToInt32(“ID”) in the Where clause the upper Exception is thrown.

01.protected void btn_Click(object sender, EventArgs e)

02.{

03.    AdventureWorksEntities entities = new AdventureWorksEntities();       

04.    Contact contact = entities.Contact

05.            .Where(c => c.ContactID == Convert.ToInt32(txtContactID.Text)).FirstOrDefault();

06.    if (contact != null)

07.        lblContactName.Text = contact.FirstName + " " + contact.LastName;

08.    else lblContactName.Text = "Contact not found!";

09.}


The workaround to this is to declare a variable of type int, which contains the converted value from the TextBox and use this variable in the Where query.

01.protected void btn_Click(object sender, EventArgs e)

02.{

03.    AdventureWorksEntities entities = new AdventureWorksEntities();

04.    int ContactID = Convert.ToInt32(txtContactID.Text);

05.    Contact contact = entities.Contact

06.                     .Where(c => c.ContactID == ContactID).FirstOrDefault();

07.    if (contact != null)

08.        lblContactName.Text = contact.FirstName + " " + contact.LastName;

09.    else lblContactName.Text = "Contact not found!";

10.}

Because this feature is available in normal LINQ to SQL I hope the ADO.NET team will do some improvement on this in the next major release of the Entity Framework.