私は Fluent Nhibernate と .NET の初心者です。私の質問が明確でない場合はお知らせください。
以下のようにアプリに3つのテーブルがあります
表 A
AID(PK)、CreatedDate(PK)、ZID、AFirstname、ALastname、AAddress、AZipCode
表 B
CID(PK)、AID(PK)、日付(PK)、フィールド1、フィールド2
表 C
CID (PK)、Cname
間違っている場合は修正してください。私のモデルクラスは以下のようになります。
public class A {
public A() {}
public virtual long AID { get; set; }
public virtual int ZID { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual string AFirstName { get; set; }
public virtual string ALastName { get; set; }
public virtual string AZip { get; set; }
public virtual string AAddress { get; set; }
}
クラス A の MapperClass
public class AMap : ClassMap<A> {
public AMap() {
Table("A");
CompositeId().KeyProperty(x => x.AID, "AID").KeyProperty(x => x.CreatedDate, "CreatedDate");
Map(x => x.ZID).Column("ZID").Not.Nullable();
Map(x => x.AFirstName).Column("AFirstname").Not.Nullable();
Map(x => x.ALastName).Column("ALastname").Not.Nullable();
//Same as above for Address and ZipCode
}
}
私のBモデルクラスは以下のようになります
public class B{
public B() { }
public virtual long AID { get; set; }
public virtual int CID { get; set; }
public virtual DateTime Date { get; set; }
public virtual string Field1 {get; set; }
public virtual string Field2 {get; set; }
}
クラス B の Mapper クラス
public class BMap : ClassMap<B> {
public BMap() {
Table("B");
CompositeId().KeyProperty(x => x.AID, "AID").KeyProperty(x => x.CID, "CID").KeyProperty(x => x.Date, "Date");
Map(x => x.Field1).Column("Field1").Not.Nullable();
//Same for Field2
}
}
私のテーブル C モデル クラスは以下のようになります。
public class C{
public C() { }
public virtual int C{ get; set; }
public virtual string Cname{ get; set; }
}
クラス C の MapperClass
public class C: ClassMap<C> {
public C() {
Table("C");
Id(x => x.CID).GeneratedBy.Identity().Column("CID");
Map(x => x.CName).Column("Cname").Length(64);
}
}
多くの人が、テーブルのデザインが適切ではないと主張するかもしれません。しかし、この時点では何もできず、間違いなくこの種の設計はパフォーマンスを低下させる可能性がありますが、しばらくの間、これと一緒に暮らす必要があると思います.
ここで、3 つのテーブルすべてのマッピングを作成する際に助けが必要です。また、Criteria API を使用して、3 つのテーブルすべてを結合するためのクエリを作成することもできます。
私のアプリケーションでは、別の関数から ZID を取得します。ZID に応じて、AFirstName、ALastName、Field1、Field2、CName を取得する必要があります。これはどのように可能ですか?
助けてください。また、問題が明確でない場合はお知らせください。
前もって感謝します。