Moseyza
سه شنبه 27 مرداد 1394, 10:21 صبح
با سلام
من در پایگاه داده ام یک موجودیت ضعیف (Weak entity) دارم که کلید اصلی جدولش با ترکیبی از کلید خودش و یه جدول دیگه اس . برای پیاده سازی کلید ترکیبی از متد CompositId تو کلاس مپینگ استفاده کردم ولی ایجاد پایگاه داده با خطا مواجه میشه .کسی میتونه با یه مثال نشون بده که چطور میشه این کار رو انجام داد؟
در ادامه کد کلاس موجودیت ها و مپینگ ها رو اضافه کردم Vertex موجودیت ضعیف و Polygon موجودیت قوی هستش
با تشکر
public class Polygon
{
public virtual int Id { set; get; }
public virtual IList<Vertex> Vertices { set; get; }
}
public class Vertex
{
public virtual int Number { set; get; }
public virtual int X { set; get; }
public virtual int Y { set; get; }
public virtual Polygon Polygon { set; get; }
}
public class PolygonMap : ClassMap<Polygon>
{
public PolygonMap()
{
Id(x => x.Id).GeneratedBy.Identity();
HasMany(x => x.Vertices).KeyColumn("PolygonId").Inverse().Cascade.AllDeleteOrphan();
Table("Polygon");
}
}
public class VertexMap : ClassMap<Vertex>
{
public VertexMap()
{
CompositeId()
.KeyProperty(x => x.Number, "Number")
.KeyReference(x => x.Polygon, "PolygonId");
Map(x => x.X);
Map(x => x.Y);
References(x => x.Polygon).Column("PolygonId");
Table("Vertex");
}
}
من در پایگاه داده ام یک موجودیت ضعیف (Weak entity) دارم که کلید اصلی جدولش با ترکیبی از کلید خودش و یه جدول دیگه اس . برای پیاده سازی کلید ترکیبی از متد CompositId تو کلاس مپینگ استفاده کردم ولی ایجاد پایگاه داده با خطا مواجه میشه .کسی میتونه با یه مثال نشون بده که چطور میشه این کار رو انجام داد؟
در ادامه کد کلاس موجودیت ها و مپینگ ها رو اضافه کردم Vertex موجودیت ضعیف و Polygon موجودیت قوی هستش
با تشکر
public class Polygon
{
public virtual int Id { set; get; }
public virtual IList<Vertex> Vertices { set; get; }
}
public class Vertex
{
public virtual int Number { set; get; }
public virtual int X { set; get; }
public virtual int Y { set; get; }
public virtual Polygon Polygon { set; get; }
}
public class PolygonMap : ClassMap<Polygon>
{
public PolygonMap()
{
Id(x => x.Id).GeneratedBy.Identity();
HasMany(x => x.Vertices).KeyColumn("PolygonId").Inverse().Cascade.AllDeleteOrphan();
Table("Polygon");
}
}
public class VertexMap : ClassMap<Vertex>
{
public VertexMap()
{
CompositeId()
.KeyProperty(x => x.Number, "Number")
.KeyReference(x => x.Polygon, "PolygonId");
Map(x => x.X);
Map(x => x.Y);
References(x => x.Polygon).Column("PolygonId");
Table("Vertex");
}
}