2011-08-04 15 views
2

私は、MS CRM 4.0のAdvanced Developer ExtensionからLINQ to CRMを使用しています。直接クエリでうまく動作します。しかし、私は、クエリは次のようになりますときに問題を持っている:Linq to CRM - 無効な操作例外

var connectionString = @"User ID=u; Password=p; Authentication Type=AD; Server=http://crm:5555/UO"; 
var connection = CrmConnection.Parse(connectionString); 
var dataContext = new CrmDataContext(connection); 

var data = from u in dataContext.Accounts 
      select new 
      { 
       Id = u.AccountID, 
       Name = u.AccountName, 
      }; 

var r = from n in data 
     where n.Name.StartsWith("test") 
     select new 
     { 
      Id = n.Id 
     }; 

r.Dump(); 

それはInvalidOperationExceptionがスロー「属性名を決定することはできませんが。」 条件は最初のクエリで直接あるときそれは結構です。私はこの種のエラーに関する有用な情報を見つけることができません

var data = from n in dataContext.Accounts 
      where n.AccountName.StartsWith("test") 
      select new 
      { 
       Id = n.AccountID, 
       Name = n.AccountName, 
      }; 

。 Xrm Linq Providerのバグですか? ご協力いただきありがとうございます。

答えて

1

最初のクエリをToList()で読み込み、匿名型に対する後のクエリがローカルで評価されるようにしてください。あなたのアカウントがたくさんある場合、これは理想から遠いですが、それはポイントを証明するでしょう。とにかく最後の声明には、本質的に解決策があります。

これは、.Dump()を呼び出すまでは最初のクエリがまったく実行されないためです。その時点で、の式を含む式は、プロバイダによって1つ(遅延実行)として評価されます。名前の属性

関連する問題