Salesforce 如何使用apex修改任何字段的元数据

Salesforce 如何使用apex修改任何字段的元数据,salesforce,apex,salesforce-lightning,Salesforce,Apex,Salesforce Lightning,我正在尝试使用Apex更改salesforce中对象字段的元数据。例如,我试图将所有必填字段设置为非必填字段。我能够使用schema类和isNillable()等方法检索所有必需的字段。我想问一下是否有任何方法可以修改元数据 关于这一点,我搜索了很多,但没有找到任何有用的结果 Schema.DescribeSObjectResult a_desc = objects.get(Name_of_of_object_whose_fields_are_to_be_retrieved).getDescri

我正在尝试使用Apex更改salesforce中对象字段的元数据。例如,我试图将所有必填字段设置为非必填字段。我能够使用schema类和isNillable()等方法检索所有必需的字段。我想问一下是否有任何方法可以修改元数据

关于这一点,我搜索了很多,但没有找到任何有用的结果

Schema.DescribeSObjectResult a_desc = objects.get(Name_of_of_object_whose_fields_are_to_be_retrieved).getDescribe(); 

Map<String, Schema.SObjectField> a_fields = a_desc.fields.getMap();
Set<string> x=a_fields.keySet();


//I am making a map of fieldname and bool(field required or not)        
Map<String,boolean> result=new Map<String,boolean>();
for(String p:x)
result.put(p,a_fields.get(p).getDescribe().isCreateable() && !a_fields.get(p).getDescribe().isNillable() && !a_fields.get(p).getDescribe().isDefaultedOnCreate());
//what I want is to modify isNillable and other attributes and make these changes to the fields.
Schema.DescribeSObjectResult a_desc=objects.get(其_字段为要检索的_对象的名称)。getDescribe();
映射a_fields=a_desc.fields.getMap();
Set x=a_fields.keySet();
//我正在制作fieldname和bool的地图(是否需要字段)
映射结果=新映射();
for(字符串p:x)
结果.put(p,a_fields.get(p).getDescripte().iscreated()&!a_fields.get(p).getDescripte().isNillable()&&!a_fields.get(p).getDescripte().isDefaultedOnCreate());
//我想要的是修改isNillable和其他属性,并对字段进行这些更改。

不能将所有必填字段设置为非必填字段,因为其中许多字段在数据库级别是必需的,无法修改

例如,名称字段(在任何具有名称字段的对象上)始终是必需的。您不能更改此属性。同样,标准对象和子对象上始终需要“主-详细信息”关系字段


要更改可修改的自定义字段的元数据,必须使用元数据API。它在Apex中不可用,除非您使用类似于
Apex mdapi
的包装器。作为警告,通过Apex以广泛的方式修改组织的元数据是危险的。你可以很容易地对你的组织及其功能造成损害。我强烈鼓励你不要试图这样做。之所以需要必填字段是有原因的。

我只想修改自定义字段。顺便说一下,非常感谢。