gpt4 book ai didi

c# - 在 ODATA $metadata 上设置命名空间

转载 作者:行者123 更新时间:2023-11-30 12:26:18 26 4
gpt4 key购买 nike

我想更改 ODATA 服务公开的所有实体的命名空间。

现在他们有:Core.DomainModel.Entities.Database 使用它时有点长。

我尝试通过 builder.Namespace = "MyModel"; 设置它,但没有效果。

var builder = new ODataConventionModelBuilder();
builder.Namespace = "MyModel";

然后我想我必须像这样在每个实体上设置它

builder.EntitySet<Foo>("Foo").EntityType.Namespace = "MyModel";

但是当我必须遍历每个实体时,这很快就会失控 :(

然后我试了一下

foreach (var entity in builder.EntitySets)
{
entity.EntityType.Namespace = "MyModel";
}

但这也不包括所有内容。我注意到 ENUM、ComplexType 和一些实体没有获得正确的命名空间...:/

所以我的问题是。如何为每个实体设置命名空间?

最佳答案

一种解决方案是从 ODataConventionModelBuilder 派生一个新类,然后实现一些覆盖。

public class ODataExtendedConventionModelBuilder : ODataConventionModelBuilder

public override ComplexTypeConfiguration AddComplexType(Type type)
{
var x = base.AddComplexType(type);
x.Namespace = Namespace;
return x;
}

public override EntityTypeConfiguration AddEntityType(Type type)
{
var x = base.AddEntityType(type);
x.Namespace = Namespace;
return x;
}

public override EnumTypeConfiguration AddEnumType(Type type)
{
var x = base.AddEnumType(type);
x.Namespace = Namespace;
return x;
}

public override void AddProcedure(ProcedureConfiguration procedure)
{
procedure.Namespace = Namespace;
base.AddProcedure(procedure);
}
}

在此示例中,我使用 ODataModelBuilder.Namespace 属性来确定要为每个实体配置的命名空间。但是,您可以做各种事情来确定要使用的命名空间。

关于c# - 在 ODATA $metadata 上设置命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29369346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com