1

これを実行すると、InvalidOperationException が発生します (「属性名を特定できません」と表示されます)。ネットで調べましたが、解決策が見つかりません。foreach (連絡先の var c) 行で発生します。

DataContext ctx = new DataContext("CrmConnection");

        var contacts = from c in ctx.contacts
                       where c != null
                       select new
                       {
                           acct = c.parentcustomerid == null ? "" : c.parentcustomerid.name,
                           last = c.lastname == null ? "" : c.lastname,
                           first = c.firstname == null ? "" : c.firstname
                       };

        List<string> lines = new List<string>();

        try
        {
            foreach (var c in contacts) *ex*
            {
                Console.WriteLine(c.acct);
                Console.ReadLine();
                lines.Add(string.Format("{0}\t{1}\t{2}", c.acct, c.last, c.first));
                Console.WriteLine(c.acct);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(String.Format("Error: {0}", ex));
        }

何かアイデアがあれば教えてください。ありがとうございました。

4

3 に答える 3

0

c.parentcustomeridは関連オブジェクトのIDだと思います。アクセスしようとしているnameというプロパティはありません。

親顧客の名前を取得する場合は、「parentcustomerid」が指している実際のCustomerオブジェクトにアクセスする必要があります。

アカウントID(acctプロパティから推測)が必要な場合は、変更するだけです

acct = c.parentcustomerid == null ? "" : c.parentcustomerid.name

にとって

acct = c.parentcustomerid == null ? "" : c.parentcustomerid
于 2012-02-16T00:30:20.180 に答える
0

この例外は、クエリの実行時に発生しました。連絡先コンテキストで反復すると、SQL からクエリを実行しようとします。このエラーは、コンテキスト モデルがデータベースに正しくマップされていないために発生したと思います。テーブル名またはプロパティが異なる可能性があります。

于 2012-02-16T00:31:51.940 に答える