C# DevExpress多对多关联表

C# DevExpress多对多关联表,c#,.net,entity-framework,devexpress,xaf,C#,.net,Entity Framework,Devexpress,Xaf,我在DevExpress支持上发布了这个问题,但是我知道在这里我可能会更快地得到答案,这对我来说是一个超级大的问题,我已经花了两天时间在这方面没有任何成功。希望这里的人可能有这个框架的经验 我的问题与当两个业务对象之间存在M-N关系时默认创建的关联表有关 想法是这样的: 假设我有这些对象->单位和用户 对于单元中的每个用户,我需要存储一个状态,因此我从SQL中创建了一个新属性,称为STATUS\u IN\u UNIT 当我想通过编程方式访问此属性时,会出现问题, 这当然是不可能的,因为我没有任何

我在DevExpress支持上发布了这个问题,但是我知道在这里我可能会更快地得到答案,这对我来说是一个超级大的问题,我已经花了两天时间在这方面没有任何成功。希望这里的人可能有这个框架的经验

我的问题与当两个业务对象之间存在M-N关系时默认创建的关联表有关

想法是这样的:

假设我有这些对象->单位和用户

对于单元中的每个用户,我需要存储一个状态,因此我从SQL中创建了一个新属性,称为STATUS\u IN\u UNIT

当我想通过编程方式访问此属性时,会出现问题, 这当然是不可能的,因为我没有任何目标 与此表关联。唯一的方法是通过查询访问它 数据库

我想要实现的是将此表显示为内部的ListView “单元详细信息”视图,这是必需的,因为用户已连接到单元 必须启用和禁用。我见过这些线

但我还是在寻找一个更简单的解决方案, 否则,创建视图和视图将非常耗时 控制我自己来处理它。所以我的问题如下 下:

1。如何创建引用此表的类? 2.如何在UNITS DetailView中显示此表并从上表访问其属性?

如果您能回答这个问题,我们将不胜感激


提前谢谢你

我假设您已经创建了一个user类,并在其中创建了一个Unit集合,在Unit类中创建了一个collection用户。在这种情况下,XAF将创建一个名为Users\u 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);
        }
    }
}
公共类用户:BaseObject
{//…您的代码在这里
[协会(“用户单位”)]
公共XPCollection用户单元
{
得到
{
返回GetCollection(“用户单位”);
}
}
}
公共类单位:BaseObject
{//…您的代码在这里
[协会(“单位用户单位”)]
公共XPCollection用户SUnits
{
得到
{
返回GetCollection(“用户单位”);
}
}
}
公共类UserUnit:BaseObject
{ 
用户;
[协会(“用户单位”)]
公共用户
{
得到
{
返回用户;
}
设置
{
SetPropertyValue(“用户”,参考用户,值);
}
}
单位;
[协会(“单位用户单位”)]
公共单位
{
得到
{
返回单元;
}
设置
{
SetPropertyValue(“单位”,参考单位,值);
}
}
智力状态;
公共int状态
{
得到
{
返回状态;
}
设置
{
SetPropertyValue(“状态”,参考状态,值);
}
}
}

当然,使用上述代码,用户和设备之间不能直接链接/取消链接。相反,您应该手动添加明细记录,因为它充当普通的主明细或一对多实体关系。

因此,如果我正确读取了您的数据,是否要显示每个单元中的单元和关联用户列表?对于这个用例,我们几乎总是使用分层数据网格,但这可能不适合您。在业务对象方面,我创建了两个类(针对您的案例、单元和用户),在父类中,我包含了子项的列表。因此,在Unit类中,您将有一个:List usersInUnit。这应该很好地绑定到分层数据网格。