1

1 つのデータベースに 2 つのスキーマがあり、変更できるスキーマは 1 つだけです。

これを行っている理由は、1 対 1 のマッピングがあるためです。つまり、追加のフィールドを Club テーブルに追加する必要があります。したがって、変更できないスキーマからテーブルをサブクラス化しました。

ベース テーブルには既にレコードが存在するため、子テーブルのみに挿入したいと考えていますが、OurClub というテーブルに最初の挿入を行う必要があります。

システム内の他のデータへのリンクを持つ親テーブル TheirClub が必要です。これを使用することで、事前にマップ済みのエンティティを再マップする必要がなくなります。

public class OurClub : TheirClub
{
    public virtual int ClubId { get; set; }
    public virtual int ClubName { get; set; }

}

public class TheirClub //The schema we cant change
{
    public virtual int ClubId { get; set; }
    public virtual List<string> Contacts { get; set; }

}

OurClub に挿入しようとするときはいつでも、TherClub にも挿入しようとします。この動作は望ましくありません。

これを回避するための提案はありますか?

4

1 に答える 1

0
public class OurClub
{
    public virtual int Id { get; set; }
    public virtual TheirClub OldClub { get; set; }
    // Additional Properties here

    // Use Properties like this to have the same References as TheirClub
    public virtual OtherEntity Other
    {
       get { return OldClub.Other; }
       set { OldClub.Other = value; }
    }
}

public class OurClubMap : ClassMap<OurClub>
{
    public OurClubMap()
    {
        Id(x => x.Id).GeneratedBy.Foreign("OldClub"); // inherits the id of the original
        // or
        Id(x => x.Id).GeneratedBy.HiLow("100");  // has its own id

        References(x => x.OldClub);
    }
}
于 2011-11-23T16:39:03.857 に答える