0

3 つの列 (ID、名前、電話) しかない 1 つのテーブルの連絡先 DB を作成しました。次に、モデルフォルダー内のテーブル Contacts を使用してContactsDataContextを作成しました。最後に、まだモデル フォルダーに部分クラスを作成します ( public 部分クラス Contact )。

今これを書いているとき

public partial class Contact
{
    public string MyContact
    {
        get 
        {
            string name = this.Name ?? String.Empty; 
        }
        // ... Other lines omitted
    }
}

次のエラーが表示されます:「'ContactsManager.Models.Contact' には ' Name ' の定義が含まれておらず、タイプ 'ContactsManager.Models.Contact' の最初の引数を受け入れる拡張メソッド ' Name ' が見つかりませんでした (見つかりませんでしたか? using ディレクティブまたはアセンブリ参照?)

何か間違えている???私のDataContextクラスからのプロパティを表示しないというインテリセンスでさえ。それでも、過去にいくつかの部分クラスを問題なく作成しました。

ありがとうございました。

4

2 に答える 2

1

名前空間は 2 つのパーシャルで同じですか?

于 2009-11-26T12:52:28.250 に答える
0

クリス・ローデン

はい、解決しました。実際、私が ASP.NET MVC を学び始めた何ヶ月も前に、上記の質問をしたことがあります。「 ASP.NET MVC - The Beer House/Nick Berardi/Wrox」という本を購入しました。神書ですが、初心者にはお勧めできません。一般に、物はどこから来たのかを知らずにそのように投げられます。

応答は、部分クラスの定義を適用することから得られました。特に、部分クラスは次のことを行う必要があります。

  • 同じ名前を持っています
  • ' partial ' キーワードが先行し、
  • 同じ名前空間で定義されている、

上記の基準のいずれかが欠けていると、すべての部分クラスを一意のクラスにマージするためにこれらの基準が使用されるため、問題が発生します。

私の場合、ContactDBというテーブルを作成しました。datacontext クラスを作成した後、Linq2Sql エディターに ContactDB テーブルをドロップしました。ご存知のとおり、これにより次のクラスが作成されます。

public partial class ContactDB
{
  //All the columns in the table become properties in this class
} 

partial キーワードを使用すると、次のように記述できます。

public partial class ContactDB
{
  //I can reference members of the above partial class... using this keyword
  //After all, the 2 constitute one class.
} 

部分クラスの定義を読んだ後、基準の 1 つに失敗したことがわかりました。ContactDB とは異なる別の部分クラスを「Contact 」と呼びました。定義を読むまでの 3 日間、私は夢中になりました。さらに、正しい名前で部分クラスを定義しても、それを別の名前空間に置くと、同様に問題が発生します。

したがって、上記の答えがうまくいかない場合 (問題が正確にはわかりません)、部分クラスの定義を確認してください。Linq2Sqlに関する ScottGu のシリーズを読むことを忘れないでください。

それが役に立てば幸い。

于 2010-09-25T10:11:23.870 に答える