2

EF4.3を使用しています。エンティティクラスの機能を拡張するために、部分的なクラスを作成します。これは主にうまく機能します。

フレームワークはハッシュセットとして1から多数のナビゲーションプロパティを作成します。サイト訪問中にユーザーが操作するアイテムリストが含まれているため、これらのいくつかを変更する必要があります。

理想的には、EqualsとHashCodeにオーバーライドを提供することですが、コードはコンパイルされず、代わりに「オーバーライドする適切なメソッドが見つかりません」というメッセージが表示されます。

この問題の回避策はありますか?

4

1 に答える 1

0

質問には:)から始めるコードはあまりありませんが、通常、カスタムequlityメンバーを追加するには、部分クラスの2番目の部分を作成し、IEquatable<T>インターフェイスを実装します。

その場合は、非ジェネリックの等式メンバーEquals()GetHashCode()のをオーバーライドすることもお勧めしますObject。これは常にオーバーライドできるはずです。おそらく例外は、「GetHashCode」の代わりに「HashCode」を使用したことが原因です。

簡単な例:

public partial class EntityClass : IEquatable<EntityClass>
{
    public bool Equals(EntityClass other)
    {
        return this.Id == other.Id;
    }

    public override bool Equals(object other)
    {
        return (other is EntityClass)
            && this.Id == ((EntityClass)other).Id;
    }

    public override int GetHashCode()
    {
        return this.Id.GetHashCode();
    }
}
于 2012-08-17T14:57:45.707 に答える