0

私は2つのテーブルを持っています、例えば:

先生1-------*生徒

'Pupils'という名前のナビゲーションプロパティが1つだけあります。

この例のために、私がやりたいのは、「Boys」という名前の2つのナビゲーションプロパティと「Girls」という名前の別のナビゲーションプロパティを作成することです。これは、「IsMale」という名前のブールに基づいています。

データベースからエンティティモデルを生成したので、これはコードファーストではありません。

誰かがこれを行う方法を教えてもらえますか?生成されたソースを変更する必要がありますか?その場合、更新が発生するとどうなりますか?コードは失われますか?

御時間ありがとうございます!

クレイグ

これが私の解決策です:

ナビゲーションプロパティを追加し、プロパティで、教師と生徒の間の関連付けを選択します。

生成されたコードで、ナビゲーションプロパティ「Boys」を見つけ、最後に.whereを追加して、次のように男の子を選択します。

    [XmlIgnoreAttribute()]
    [SoapIgnoreAttribute()]
    [DataMemberAttribute()]
    [EdmRelationshipNavigationPropertyAttribute("SchoolModel", "FK_Pupils_Teacher", "Pupil")]
    public EntityCollection<Pupil> Boys
    {
        get
        {
            return (EntityCollection<PriceKey>)((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<PriceKey>("SchoolModel.FK_Pupils_Teacher", "Pupil").Where(p => p.IsMale == true);
        }
        set
        {
            if ((value != null))
            {
                ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Pupil>("SchoolModel.FK_Pupils_Teacher", "Pupil", value);
            }
        }
    }

それが私の解決策です。これで、ナビゲーションプロパティを使用できるようになり、必要なものを返します。

私も以下の答えが好きです!そして、1つはより良いアイデアだと思います:)

乾杯!

4

1 に答える 1

1

Teacher.csファイルが置かれているフォルダにファイルを置きます.EDMX

partial class Teacher
{
    public IEnumerable<Pupil> Boys
    {
        get { return Pupils.Where(x => x.IsMale); }
    }

    public IEnumerable<Pupil> Girls
    {
        get { return Pupils.Where(x => !x.IsMale); }
    }
}

ちなみに、これらはナビゲートプロパティではありません。私はあなたがそれをすることができないと思います。

于 2012-11-20T16:35:10.797 に答える