通过NHibernate,Fluent NHibernate映射主/细节场景的问题

时间:2011-08-10 17:12:45

标签: hibernate nhibernate entity-framework fluent-nhibernate

我想实现以下要求:

修改 我需要的是。可以有一个主位置和详细位置(一个多个)。每个位置可以多辆车。主位置有自己的carname(在carname表上),cartext和IsCar(在CarText表上)。详细位置使用来自主位置的carname,但在CarText表上有自己的列。允许多个主站位置(每个主站具有许多详细位置)。

我应该如何设计Car类,以及Fluent NHibernate中的ORM映射?

以下是C#类:

Below is the tables:

    Table Location:
    LocationId

    Table CarName:
    CarId, LocationId, Name, Colour

The LocationId allows multiple cars. 

    Table CarText:
    CarTextId, CarId, LocationId, Text, IsCar

提前致谢!

1 个答案:

答案 0 :(得分:1)

编辑:这个班级结构是否更接近你的要求?

public class Location
{
    public virtual int Id { get; set; }
    public virtual Car MasterCar { get; set; }
}

public class Car
{
    public virtual Location Location { get; set; }
    public virtual string Name { get; set; }
    public virtual IDictionary<Location, string> TextsByLocation { get; set; }
}

Edit2:这更好吗?

public class MasterLocation
{
    public virtual int Id { get; set; }
    public virtual ICollection<Location> Details { get; set; }
    public virtual string CarName { get; set; }
}

public class Location
{
    public virtual MasterLocation Master { get; set; }
    public virtual int Id { get; set; }
    public virtual ICollection<Cars> Cars { get; set; }
}

public class Car
{
    public virtual Location Location { get; set; }
    public virtual string Name
    {
        get { return Location.Master.CarName; }
        set { Location.Master.CarName = value; }
    }
    public virtual string Text { get; set; }
}