Код компилируется нормально, но NUnit не проходит тесты со следующей ошибкой:
09: 59: 00,789 ОШИБКА [TestRunnerThread] AbstractBatcher [(null)] - не удалось выполнить запрос: ВЫБЕРИТЕ workflow0_.Id в качестве Id13_0_, workflow0_.Name как Name13_0_, workflow0_.ModifiedById в качестве измененного 3_13_0_, workflow0_0.IdId CreatedB5_13_0_, workflow0_.CreatedDate as CreatedD6_13_0_, workflow0_.Version в качестве Version13_0_, workflow0_.WorkflowTemplateID как Workflow8_13_0_, workflow0_1_.PBMId как PBMId14_0_, как workflow0 0_0, тогда как workflow0_0 является нулевым, если для workflow0_0 используется значение_0_1, то в случае, когда workflow0_0 является нулевым_обозначением_обозначения_обозначения_обозначения_обозначения_обозначения_обозначения_обозначения_процедура_0_0_0_0_0_0_0_1_0_1_0_1_0_1_0_1_0_1_1 0 workflow0_ оставил внешнее соединение WorkflowRDSCostReport workflow0_1_ на workflow0_.Id = workflow0_1_.Workflow_id WHERE workflow0_.Id=@p0
System.Data.SqlClient.SqlException (0x80131904): недопустимое имя столбца 'Workflow_id'.
Тесты будут работать нормально, если я урону файл, содержащий отображение подкласса. Родителем является рабочий процесс с «Id» в качестве столбца PK. Дочерний объект - WorkflowRDSCostReport с «WorkflowId» как отношение PK & FK. WorkflowTemplate - это отдельная таблица, которая отлично работает. Код:
Workflow.cs:
public class Workflow: EditableEntityBase<int>
{
#region properties
public virtual WorkflowTemplate WorkflowTemplate { get; set; }
public virtual string Name { get; set; }
#endregion properties
}
WorkflowRDSCostReport.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
}
}