Код компилируется нормально, но NUnit не проходит тесты со следующей ошибкой:
09:59:00,789 ОШИБКА [TestRunnerThread] AbstractBatcher [(null)] — Не удалось выполнить запрос: SELECT workflow0_.Id as Id13_0_, workflow0_.Name as Name13_0_, workflow0_ .ModifiedById в Modified3_13_0_, workflow0_.ModifiedDate как Modified4_13_0_, workflow0_.CreatedById как CreatedB5_13_0_, workflow0_.CreatedDate как CreatedD6_13_0_, workflow0_.Version как Version13_0_, workflow0_.WorkflowTemplateID как Workflow8_13_0_, workflow0
public class Workflow: EditableEntityBase<int>
{
#region properties
public virtual WorkflowTemplate WorkflowTemplate { get; set; }
public virtual string Name { get; set; }
#endregion properties
}
.PBMId как PBMId14_0_, случай, когда workflow0public class Workflow: EditableEntityBase<int>
{
#region properties
public virtual WorkflowTemplate WorkflowTemplate { get; set; }
public virtual string Name { get; set; }
#endregion properties
}
.Workflow_id не нулевое значение, то 1, если workflow0_.Id не равен нулю, затем 0 заканчивается как clazz_0_ FROM Workflow workflow0_ left external join WorkflowRDSCostReport workflow0public class Workflow: EditableEntityBase<int>
{
#region properties
public virtual WorkflowTemplate WorkflowTemplate { get; set; }
public virtual string Name { get; set; }
#endregion properties
}
on workflow0_.Id=workflow0public class Workflow: EditableEntityBase<int>
{
#region properties
public virtual WorkflowTemplate WorkflowTemplate { get; set; }
public virtual string Name { get; set; }
#endregion properties
}
.Workflow_id WHERE workflow0_.Id=@p0 System.Data.SqlClient.SqlException (0x80131904): недопустимое имя столбца «Идентификатор рабочего процесса».
Тесты будут работать нормально, если я удалю файл, содержащий сопоставление подклассов. Родителем является рабочий процесс с «Id» в качестве столбца PK. Дочерним элементом является WorkflowRDSCostReport с «WorkflowId» в качестве отношения PK и FK. WorkflowTemplate — это отдельная таблица, которая отлично работает. Код:
Рабочий процесс.cs:
public class Workflow: EditableEntityBase<int>
{
#region properties
public virtual WorkflowTemplate WorkflowTemplate { get; set; }
public virtual string Name { get; set; }
#endregion properties
}
Рабочий процессRDSCostReport.cs:
public class WorkflowRDSCostReport : Workflow
{
#region properties
public virtual int PBMId { get; set; }
#endregion properties
}
WorkflowMap.cs:
public class WorkflowMap: ClassMap<Workflow>
{
public WorkflowMap()
{
Table("Workflow");
Id(x => x.Id, "Id")
.GeneratedBy.Identity();
References(x => x.WorkflowTemplate, "WorkflowTemplateID")
.Not.Nullable()
.Not.LazyLoad()
.Cascade.None();
//Name
Map(x => x.Name, "Name")
.Nullable();
//ModifiedById
Map(x => x.ModifiedById, "ModifiedById")
.Not.Nullable();
//ModifiedDate
Map(x => x.ModifiedDate, "ModifiedDate")
.CustomType(typeof(DateTime))
.Not.Nullable();
//CreatedById
Map(x => x.CreatedById, "CreatedById")
.Not.Nullable();
//CreatedDate
Map(x => x.CreatedDate, "CreatedDate")
.CustomType(typeof(DateTime))
.Not.Nullable();
//Version
Map(x => x.Version, "Version")
.Not.Nullable();
}
}
WorkflowRDSCostReportMap.cs:
public class WorkflowRDSCostReportMap : SubclassMap<WorkflowRDSCostReport>
{
public WorkflowRDSCostReportMap()
{
Table("WorkflowRDSCostReport");
Map(x => x.PBMId, "PBMId")
.Not.Nullable();
}
}
WorkflowRepository.cs:
public class WorkflowRepository : RepositoryBase<Workflow, int>
{
public WorkflowRepository() : base() { }
}
WorkflowRepositoryTest.cs:
namespace Test
{
[TestFixture]
public class WorkflowRepositoryTest
{
#region Class Members
private Workflow _workflow;
private WorkflowRepository _workflowRepository;
private WorkflowTemplate _workflowTemplate;
private WorkflowTemplateRepository _workflowTemplateRepository;
private WorkflowRDSCostReport _workflowRDSCostReport;
#endregion Class Members
#region Setup
[TestFixtureSetUp]
public void TestFixtureSetup()
{
RepositoryBase.UseDevDatabase = true;
_workflowTemplate = TestHelper.CreateWorkflowTemplate();
_workflowTemplateRepository = new WorkflowTemplateRepository();
_workflowTemplateRepository.Save(_workflowTemplate);
}
[SetUp]
public void SetUp()
{
_workflow = TestHelper.CreateWorkflow(_workflowTemplate);
_workflowRepository = new WorkflowRepository();
_workflowRDSCostReport = TestHelper.CreateWorkflowRDSCostReport();
}
#endregion Setup
[Test]
public void DeleteTest()
{
_workflowRepository.Save(_workflow);
Workflow readEntity = _workflowRepository.Fetch(_workflow.Id);
Assert.NotNull(readEntity);
_workflowRepository.Delete(_workflow);
readEntity = _workflowRepository.Fetch(_workflow.Id);
Assert.IsNull(readEntity);
_workflow = null;
}
#region TearDown
[TearDown]
public void TearDown()
{
if (_workflow != null)
{
_workflowRepository.Delete(_workflow);
}
if (_workflowRDSCostReport != null)
{
_workflowRepository.Delete(_workflowRDSCostReport);
}
}
[TestFixtureTearDown]
public void TestFixtureTearDown()
{
_workflowTemplateRepository.Delete(_workflowTemplate);
}
#endregion // TearDown
}
}