Поскольку в моем классе сущностей много одинаковых полей, таких как id
, org_id
и т. Д. c., Я написал наследование базового класса, так что каждому подклассу не нужно записывать эти поля больше.
У меня есть базовый класс:
[OptimisticLocking(false), NonPersistent]
public class BaseOrganization : XPBaseObject
{
public BaseOrganization(Session session) : base(session) { }
private Organization _organization;
[Association, NoForeignKey, Persistent("org_id")]
public Organization organization
{
get { return _organization; }
set { SetPropertyValue(nameof(organization), ref _organization, value); }
}
}
Производный подкласс:
[Persistent("company")]
public class Company : BaseOrganization
{
public Company(Session session) : base(session) { }
private string _code;
[Size(100), Nullable(false), Indexed(nameof(organization), Name = "IX_company", Unique = true)]
public string code
{
get { return _code; }
set { SetPropertyValue(nameof(code), ref _code, value); }
}
private string _name;
[Size(100), Nullable(false)]
public string name
{
get { return _name; }
set { SetPropertyValue(nameof(name), ref _name, value); }
}
}
Появляется следующее сообщение об ошибке:
The association attribute cannot be used for member `Precise.Model.BaseOrganization.organization` because class `Precise.Model.BaseOrganization` is not persistent.
Если я удаляю постоянную идентификацию базового класса:
[OptimisticLocking(false)]
public class BaseOrganization : XPBaseObject
{
public BaseOrganization(Session session) : base(session) { }
private Organization _organization;
[Association, NoForeignKey, Persistent("org_id")]
public Organization organization
{
get { return _organization; }
set { SetPropertyValue(nameof(organization), ref _organization, value); }
}
}
Производный подкласс:
[Persistent("company")]
public class Company : BaseOrganization
{
public Company(Session session) : base(session) { }
private string _code;
[Size(100), Nullable(false), Indexed(nameof(organization), Name = "IX_company", Unique = true)]
public string code
{
get { return _code; }
set { SetPropertyValue(nameof(code), ref _code, value); }
}
private string _name;
[Size(100), Nullable(false)]
public string name
{
get { return _name; }
set { SetPropertyValue(nameof(name), ref _name, value); }
}
}
Ошибка подсказки во время выполнения: Свойство organization
не существует в типе Precise.Model.Models.Company
.