微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Devexpress xaf多对多关系oid键名称更改

如何解决Devexpress xaf多对多关系oid键名称更改

我想设置多对多关系oid键名。 在多对多关系中,Oid是自动创建的,但在数据库方面,我想将oid名称更改为自定义名称。 例如;

如果我尝试创建人与任务多对多关系。下面的第三个表格属性

KomutTanim(从FK到Makine) Makine(FK到KomutTanim) OID(PK,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),XafdisplayName("Makineler")]
public xpcollection<Makine> MasterId
{
get
{
return GetCollection<Makine>(nameof(MasterId));
}
}

解决方法

您可以自定义XPO元数据,也可以为中间表手动创建一个持久类。这些方法在How to implement a many-to-many relationship with an intermediate table票证中得到了说明。

定制XPO元数据的解决方案使用XAF API通过XPDictionary属性访问XPClassInfo实例。您只能使用XPO方法访问XPDictionary,如How to get an XPClassInfo instance所示。另外,您可以按照How to create persistent metadata on the fly and load data from an arbitrary table文章中的说明手动创建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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。