如何使用web API odatamodelbuilder来处理EF流畅的API映射

 apologize 发布于 2023-01-06 14:36

我使用pocos创建了一个相当简单的域模型.我已经使用EntityTypeConfiguration类将它们映射到EF DB上下文.一切正常.

我现在正在尝试使用a创建一个OData V4 WebAPI控制器端点ODataConventionModelBuilder,这就是事情即将发生的地方.一切正常,直到它遇到一个非常规的关联.但我无法找到一种方法来ODataBuilder从我的EntityTypeConfiguration课程中获取映射.

这留下了2个令人不快的选择

用脏的属性装饰我可爱干净的pocos.

使用.手动重新映射所有非基于约定的映射 ODataBuilder

不确定代码示例是否会有所帮助,但无论如何,我已经简化了实体以简化.

var builder = new ODataConventionModelBuilder();

            builder.EntitySet("Items");
            config.MapODataServiceRoute(
                routeName: "odata",
                routePrefix: "odata",
                model: builder.GetEdmModel(),
                batchHandler: new DefaultODataBatchHandler((GlobalConfiguration.DefaultServer)));

 public class Item
    {
        public Int32 Id { get; set; }

        public Int16 ItemTypeId { get; set; }                   

        public virtual ItemType Type { get; set; }
        public virtual ICollection Versions { get; set; }
        public virtual ICollection Tags { get; set; }     
    }

遇到ItemTags集合时出现问题,这里是ItemTag:

public class ItemTag
    {
        public Int32 ItemId { get; set; }

        public string Tag { get; set; }

        public Item Item { get; set; }
    }

您可以看到的不是基于约定的,我有一个配置类,如下所示:

public class ItemTagConfiguration : EntityTypeConfiguration
    {
        public ItemTagConfiguration()
        {
            HasKey(x => new {x.ItemId, x.Tag});

            HasRequired(x => x.Item)
                .WithMany(y => y.Tags)
                .HasForeignKey(x => x.ItemId);

        }
    }

有没有人知道我可以使用EntityTypeConfigurationODataBuilder或Web API 使用这些文件的方法?

编辑

如果发现这个页面似乎表明它可能与我正在使用的EF 6.我想做的就是这个

ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet("Dbfs");
//            modelBuilder.Configurations.Add(new DbfMap());  <---- NO GOOD - Needs Class from DBContext we only have a model builder :(
Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute("ODataRoute", "odata", model);

但构建器没有Configurations属性.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有