Devexpress xaf多对多关系oid密钥名称更改

Devexpress xaf多对多关系oid密钥名称更改,devexpress,xaf,xpo,Devexpress,Xaf,Xpo,我想设置多对多关系oid密钥名。 在多对多关系中,Oid是自动创建的,但在数据库端,我想将Oid名称更改为自定义名称。 比如, 如果我试图创造人与任务多对多的关系。第三个表的属性如下所示 KomutTanim(FK至Makine) Makine(FK至KomutTanim) OID(主键,guid)**(我想设置此键名??)** 告诉我怎么做。我在下面添加了示例代码 [Association("Relation.KomutListesi_Makine",typeof(

我想设置多对多关系oid密钥名。 在多对多关系中,Oid是自动创建的,但在数据库端,我想将Oid名称更改为自定义名称。 比如,

如果我试图创造人与任务多对多的关系。第三个表的属性如下所示

KomutTanim(FK至Makine) Makine(FK至KomutTanim) OID(主键,guid)**(我想设置此键名??)**

告诉我怎么做。我在下面添加了示例代码

    [Association("Relation.KomutListesi_Makine",typeof(KomutTanim),UseAssociationNameAsIntermediateTableName = true),XafDisplayName("Makine Komutları")]
public XPCollection<KomutTanim> Komutlar
{
get
{
return GetCollection<KomutTanim>(nameof(Komutlar));
}
}

[Association("Relation.KomutListesi_Makine", typeof(Makine), UseAssociationNameAsIntermediateTableName = true), XafDisplayName("Makineler")]
public XPCollection<Makine> MasterId
{
get
{
return GetCollection<Makine>(nameof(MasterId));
}
}
[关联(“Relation.komutlistsi_Makine”,typeof(KomutTanim),UseAssociationNameAsIntermediateTableName=true),XafDisplayName(“Makine Komutlar”)]
公共收集科穆特拉
{
得到
{
return GetCollection(nameof(Komutlar));
}
}
[关联(“Relation.komutlistisi_Makine”、类型(Makine)、使用AssociationNameAsIntermediateTableName=true)、XafDisplayName(“Makineler”)]
公共集合主ID
{
得到
{
返回GetCollection(nameof(MasterId));
}
}

您可以自定义XPO元数据或手动为中间表创建持久类。这些方法在票据中有说明

定制XPO元数据的解决方案使用XAF API通过XPDictionary属性访问XPClassInfo实例。只能使用XPO方法访问XPDictionary,如中所示。此外,您还可以手动创建ReflectionDictionary实例(ReflectionDictionary是XPDictionary的后代),如本文所述

XPDictionary dictionary = new ReflectionDictionary();
XPClassInfo intermediateClassInfo = dictionary.GetClassInfo(typeof(KomutTanim)).FindMember(nameof(KomutTanim.MasterId)).IntermediateClass;
intermediateClassInfo.FindMember("Oid").AddAttribute(new PersistentAttribute("MyName"));

string conn = "My connection string";

IDataStore store = XpoDefault.GetConnectionProvider(conn, AutoCreateOption.SchemaAlreadyExists);

IDataLayer dl = new SimpleDataLayer(dictionary, store);

XpoDefault.DataLayer = dl;