3

ヘッダー詳細フォームを作成しようとしています。VS2010 C# Winforms で。BindingSourceフォームは、 というコントロールを使用して、Attendees というプロパティを持つ Entity Framework クラスにバインドしますbindingSource1。グリッドは、 と で別のコントロールにバインドされますBindingSourcedatasource = bindingSource1DataMember = Attendees

コードファーストEFを使用しています。エンティティクラスは

public class ContactEvent
{
    public int Id { get; set; }
    public string Title { get; set; }

    private readonly BindingList<ContactEventAttendee> _attendees = new BindingList<ContactEventAttendee>();
    public virtual BindingList<ContactEventAttendee> Attendees
    {
        get { return _attendees; }
    }
}

デザイナーを使用して列を設定し、不要な列をすべて削除します。フォームを保存して再度開くと、不要な列が戻ってきます

私はここ を見て、このテクニックを試しましたが、役に立ちません。とにかく - 私の問題は設計時に表示されます。

この問題は、バインドされた列をすべて削除した場合にのみ発生します。私の列はすべてバインドされていないので、これが私が望むものです。

ContactEventAttendee クラスは次のとおりです。

public class ContactEventAttendee : ILoggedEntity
{
    public int Id { get; set; }
    public Guid RowId { get; set; }
      [ConcurrencyCheck]
    public int RowVersionId { get; set; }
    public int SourceSiteNumber { get; set; }
    public virtual ContactEvent ContactEvent { get; set; }
    public virtual Person Person { get; set; }
}

関連する別のクラスでも同じ問題が発生します。フォームから bindingNavigator を削除すると、問題はなくなります

データソースは

ここ

4

1 に答える 1

3

試してみる。

public class ContactEvent
{
    public int Id { get; set; }
    public string Title { get; set; }

    public virtual ICollection<ContactEventAttendee> ContactEventAttendees {get; set;}
}

編集

わかりました、プロジェクトを作成して を設定しようとしたときに正確な問題が発生しましたDataSourceClassDataGridViewこれは別の奇妙なバグですか? まあ、私たちは本当に知りませんが、ここに私の解決策があります。

  1. EntityCodeFirst別のものを分離し、Class Project変更を加えるたびにこれを再構築します。
  2. あなたの主なプロジェクトでは、Reference下の画像を見るために追加するだけです:ここに画像の説明を入力
  3. 今すぐあなたのDataSourceを選択してDataGridViewくださいObjectここに画像の説明を入力

ここで、すべての列を削除して、もう一度再構築してみてください。

編集:私のサンプルの参照

public class ContactEvent
{
    public int Id { get; set; }
    public string Title { get; set; }
    public  ICollection<ContactEventAttendee> _attendees  { get; set;}
}

public class ContactEventAttendee
{
    public int Id { get; set; }
    public Guid RowId { get; set; }
    public int RowVersionId { get; set; }
    public int SourceSiteNumber { get; set; }
    public virtual ContactEvent ContactEvent { get; set; }
}
于 2013-01-05T16:42:53.457 に答える