我是 Fluent Nhibernate 和 .NET 的新手。因此,如果我的问题不清楚,请告诉我。
我在应用程序中有 3 个表格,如下所示
表 A
AID(PK)、CreatedDate(PK)、ZID、AFirstname、ALastname、AAddress、AZipCode
表 B
CID(PK)、AID(PK)、日期(PK)、Field1、Field2
表 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 类的映射器类
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);
}
}
现在许多人可能会争辩说桌子设计不合适。但此时无能为力,这种设计肯定会降低性能,但我想我们必须忍受一段时间。
现在我需要一些帮助来编写所有三个表的映射。我也可以使用 Criteria API 编写一个查询来加入所有 3 个表。
在我的应用程序中,我从另一个函数中获取 ZID。现在根据 ZID,我需要获取 AFirstName、ALastName、Field1、Field2、CName。这怎么可能?
请帮忙。如果问题不清楚,也请告诉我。
提前致谢。