C# 从CDS实体中选择所有字段

C# 从CDS实体中选择所有字段,c#,common-data-service,C#,Common Data Service,在Common Data Services SDKMicrosoft.CommonDataService中,我可以使用此代码从数据库中选择实体 // Specify the generic object to retrieve var genericEntitySet = client.GetRelationalEntitySet( new EntitySetReference("Microsoft.CommonDataService.CommonEntities", AdvEn

在Common Data Services SDK
Microsoft.CommonDataService
中,我可以使用此代码从数据库中选择实体

// Specify the generic object to retrieve
var genericEntitySet = client.GetRelationalEntitySet(
    new EntitySetReference("Microsoft.CommonDataService.CommonEntities",
    AdvEntity.EntityName,
    Microsoft.CommonDataService.Version.Create("1.0.0")));

// Specify the required fields
var query = genericEntitySet.CreateQueryBuilder()
    .Project(pc => 
        pc
            .SelectField(f => f["PrimaryId"])
            .SelectField(f => f["Project_Title"])
            .SelectField(f => f["CreatedByUser"])
            .SelectField(f => f["CreatedOnDateTime"])
            .SelectField(f => f["LastModifiedByUser"])
            .SelectField(f => f["LastModifiedDateTime"])
            .SelectField(f => f["Opportuinity"])
            .SelectField(f => f["BNB"])
            .SelectField(f => f["SP_URL"])
            .SelectField(f => f["ProjectMgr"])
            .SelectField(f => f["WorkTeam"])
            .SelectField(f => f["BnB_ID"])
            .SelectField(f => f["Custodian"])
            .SelectField(f => f["Stage"])
            .SelectField(f => f["Opp_Status"])
            .SelectField(f => f["Confidential"])
            .SelectField(f => f["CRMT_Num"])
            .SelectField(f => f["Proj_Num"])
            .SelectField(f => f["Sector"])
            .SelectField(f => f["Service"])
            .SelectField(f => f["Archive"])
        );

var selectExecutor = client.CreateRelationalBatchExecuter(
    RelationalBatchExecutionMode.Transactional);

await selectExecutor
    .Query(query, out OperationResult<IReadOnlyList<RelationalEntity>> queryResult)
    .ExecuteAsync();
//指定要检索的泛型对象
var genericeEntitySet=client.GetRelationalEntitySet(
新EntitySetReference(“Microsoft.CommonDataService.CommonEntities”,
AdvEntity.EntityName,
Microsoft.CommonDataService.Version.Create(“1.0.0”);
//指定所需的字段
var query=genericeEntitySet.CreateQueryBuilder()
.项目(pc=>
个人计算机
.SelectField(f=>f[“PrimaryId”])
.SelectField(f=>f[“项目名称”])
.SelectField(f=>f[“CreatedByUser”])
.SelectField(f=>f[“CreatedOnDateTime”])
.SelectField(f=>f[“LastModifiedByUser”])
.SelectField(f=>f[“LastModifiedDateTime”])
.SelectField(f=>f[“机会”])
.SelectField(f=>f[“BNB”])
.SelectField(f=>f[“SP_URL”])
.SelectField(f=>f[“项目管理器”])
.SelectField(f=>f[“工作组”])
.SelectField(f=>f[“BnB_ID”])
.SelectField(f=>f[“保管人”])
.SelectField(f=>f[“阶段”])
.SelectField(f=>f[“Opp_状态”])
.SelectField(f=>f[“机密”])
.SelectField(f=>f[“CRMT_Num”])
.SelectField(f=>f[“项目数”])
.SelectField(f=>f[“扇区”])
.SelectField(f=>f[“服务”])
.SelectField(f=>f[“存档”])
);
var selectExecutor=client.CreateRelationalBatchExecuter(
RelationalBatchExecutionMode.Transactional);
等待选择执行者
.Query(Query,out OperationResult queryResult)
.ExecuteAsync();
然而,为我可能需要检索的每种类型的对象选择所有这些字段似乎很麻烦

有没有办法告诉代码获取所有属性

声明

请注意,出于性能原因,没有自动选择所有字段的选项

此SDK正在预览中,因此没有太多关于它的信息,但也许有人知道这方面的诀窍?

根据

静态异步任务SimpleSelectAsync(客户端)
{
var queryBuilder=client.GetRelationalEntitySet()
.CreateQueryBuilder();
var query=queryBuilder
.其中(电脑=>电脑名称==“电子”)
.OrderByAscending(pc=>新对象[]{pc.CategoryId})
.Project(/*删除此内容?.pc=>pc.SelectField(f=>f.CategoryId)
.SelectField(f=>f.Name)
.SelectField(f=>f.Description)*/);
//执行查询:
OperationResult queryResult=null;
var executor=client.CreateRelationalBatchExecuter(
RelationalBatchExecutionMode.Transactional)
.Query(Query,out queryResult);
等待执行器。ExecuteAsync();
foreach(queryResult.Result中的var pc)
{
Console.WriteLine(pc.Name);
}
}

简史:您所说的CDS1.0是在Dynamics AX之上构建的旧版本,现已退役

全新的CDS 2.0构建在Dynamics CRM(也称为Dynamics客户参与(CE)也称为Dynamics 365)的基础上,称为应用程序CDS。此应用程序CD具有查询概念,如QueryExpression和FetchXML,您可以在其中提及所有属性(
ColumnSet=new ColumnSet(true)
),以便像SQL一样检索(
select*from table

但是,从性能角度来看,不建议这样做。

Project()
方法需要一个参数。当按您的建议调用时,我得到
没有给出与“WhereClauseBuilder.project(Func)”的必需形式参数“project”对应的参数
。您在文档中的何处找到该示例?我看不见
static async Task SimpleSelectAsync(Client client)
{
    var queryBuilder = client.GetRelationalEntitySet<ProductCategory>()
        .CreateQueryBuilder();

    var query = queryBuilder
        .Where(pc => pc.Name == "Electronics")
        .OrderByAscending(pc => new object[] { pc.CategoryId })
        .Project( /* REMOVE THIS STUFF?.. pc => pc.SelectField(f => f.CategoryId)
            .SelectField(f => f.Name)
            .SelectField(f => f.Description) */ );

    // Execute the query:
    OperationResult<IReadOnlyList<ProductCategory>> queryResult = null;
    var executor = client.CreateRelationalBatchExecuter(
        RelationalBatchExecutionMode.Transactional)
        .Query(query, out queryResult);

    await executor.ExecuteAsync();

    foreach (var pc in queryResult.Result)
    {
        Console.WriteLine(pc.Name);
    }
}
var request = new RetrieveRequest()
{
  ColumnSet = new ColumnSet(true),
  RelatedEntitiesQuery = relationshipQueryCollection,
  Target = new EntityReference("account", accountid)
};