編輯:重構相匹配的更新問題
因爲EntityText的內容背後的邏輯,我會prefere多態性
public abstract class Task
{
public virtual int Id { get; set; }
public abstract string Text { get; set; }
}
public class ContactTask : Task
{
public virtual Contact Contact { get; set; }
public override string Text
{
get { return Contact.FirstName + " " + Contact.LastName; }
set { Contact.FirstName = value.Split(' ')[0]; Contact.LastName = value.Split(' ')[1]; }
}
}
public class CompanyTask : Task
{
public virtual Company Company { get; set; }
public override string Text
{
get { return Company.Name; }
set { Company.Name = value; }
}
}
public class TaskMap : ClassMap<Task>
{
public TaskMap()
{
Table("TaskTable");
Id(c => c.Id, "taskID").GeneratedBy....();
DiscriminateSubclassesOn("entityType");
}
}
public class ContactTaskMap : ClassMap<ContactTask>
{
public ContactTaskMap()
{
DiscriminatorValue(3);
References(ct => ct.Contact, "entityID");
}
}
public class CompanyTaskMap : ClassMap<CompanyTask>
{
public ContactTaskMap()
{
DiscriminatorValue(2);
References(ct => ct.Company, "entityID");
}
}
// get all tasks
var all = session.QueryOver<Task>().List();
// get all tasks for Company
var companyTasks = session.QueryOver<CompanyTask>().List();
你的問題有點不清楚。所有這些映射是否都是相同的對象類?你可以添加你的班級代碼嗎? – 2011-12-14 08:22:58
不同的對象類,它們是不同的。我已經添加了它。 – iboware 2011-12-14 12:18:00