我在DevExpress的支持下发布了这个问题,不过我知道在这里我可能会更快地得到答案,这对我来说是一个超级大问题而且我已经拉了两天没有任何成功。希望这里的人可能有这方面的经验。
我的问题与两个Business Objects之间存在M-N关系时默认创建的关联表有关。
想法是这样的:
让我们假设我有这些对象 - >单位和用户
对于UNIT中的每个USER,我需要存储一个STATUS,因此我从SQL创建了一个名为STATUS_IN_UNIT的新属性
当我想以编程方式访问此属性时出现问题, 这当然是不可能的,因为我没有任何对象 与此表相关联。唯一的办法就是通过查询来访问它 数据库。
我想要实现的是在ListView里面显示这个表 UNIT DetailView,这是因为USERS连接到UNIT 必须启用和禁用。我见过这些线程
https://www.devexpress.com/Support/Center/Example/Details/E2334 https://www.devexpress.com/Support/Center/Question/Details/T500887
但是我再次寻找一个更简单的解决方案, 否则创建视图真的很费时间 控制我的自我,以处理它。所以我的问题是 下面:
1。如何创建引用该表的类? 2.如何在UNITS DetailView中显示该表并从上表中访问其属性?
如果你回答这个问题,我们将不胜感激。
提前谢谢!!!
答案 0 :(得分:2)
我假设您已经创建了一个用户类并在其中创建了一个Unit集合,并在Unit类中创建了一个集合用户。在这种情况下,XAF将创建一个名为Users_Units的自动创建的中间表,它包含两个主键,您无法在其中添加任何属性。如果要在中间类中添加属性或属性,则应该显式创建类,所以这里是代码:
public class User : BaseObject
{ //... your code here
[Association("User-UserUnits")]
public XPCollection<UserUnit> UserUnits
{
get
{
return GetCollection<UserUnit>("UserUnits");
}
}
}
public class Unit : BaseObject
{ // ... your code here
[Association("Unit-UserUnits")]
public XPCollection<UserUnit> UsersUnitss
{
get
{
return GetCollection<UserUnit>("UserUnits");
}
}
}
public class UserUnit : BaseObject
{
User user;
[Association("User-UserUnits")]
public User User
{
get
{
return user;
}
set
{
SetPropertyValue("User", ref user, value);
}
}
Unit unit;
[Association("Unit-UserUnits")]
public Unit Unit
{
get
{
return unit;
}
set
{
SetPropertyValue("Unit", ref unit, value);
}
}
int status;
public int Status
{
get
{
return status;
}
set
{
SetPropertyValue("Status", ref status, value);
}
}
}
但是当然使用上面的代码,你不能直接在User和Unit之间相互链接/取消链接。相反,您应该手动添加详细记录,因为它充当普通的主要细节或一对多实体关系。