首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF核中的EF6映射和MapToStoredProcedures等价

EF核中的EF6映射和MapToStoredProcedures等价
EN

Stack Overflow用户
提问于 2020-11-24 05:37:22
回答 1查看 208关注 0票数 2

我正在将我们的EntityFrameworkCore重写到webapis核心并使用webapis 5.0。在我们之前的迭代中,我们使用了EntityFramework 6。我们正在移动这个应用程序,这样我们就可以在azure上托管它了。

我是EFCore的新手,注意到了一些我似乎无法解决的不同之处。

我们有一个实体,它将使用来自两个表的映射,一个是视图,另一个是对象所在的实际表。最后一部分包含在dbo.PhoneFaxEmail表中插入、更新和删除条目的存储过程。

下面是前面的EF6代码。

代码语言:javascript
复制
Map(m =>
            {
                m.ToTable("HomeownerContactDetails_vw", "monarch");
                m.Properties(h => new { h.HomeownerId, h.Id, h.StartDate, h.EndDate });

                m.Requires("RelationTypeLUKey").HasValue(587); // Contact-PhoneFaxEmail (p-c)

                m.Property(h => h.HomeownerId).HasColumnName("ParentRelationKey");
                m.Property(h => h.Id).HasColumnName("ChildRelationKey");
            });

            #endregion

            #region PhoneFaxEmail Mapping

            Map(m =>
            {
                m.ToTable("dbo.PhoneFaxEMail");
                m.Properties(h => new { h.Type, h.Value, h.ValidDate, h.Status, h.Version });

                m.Property(h => h.Id)
                    .HasColumnName("RelationKey");

                m.Property(h => h.Type).HasColumnName("PhoneFaxEMailTypeLUKey");
                m.Property(h => h.Value).HasColumnName("Value");
                m.Property(h => h.ValidDate).HasColumnName("StatusDate");
                m.Property(h => h.Status).HasColumnName("StatusLUKey");
                m.Property(a => a.CreatedBy).HasColumnName("CreatedBy");
                m.Property(a => a.CreatedDate).HasColumnName("CreatedDate");
                m.Property(a => a.ModifiedBy).HasColumnName("ModifiedBy");
                m.Property(a => a.ModifiedDate).HasColumnName("ModifiedDate");
            });

            #endregion

            MapToStoredProcedures(s =>
            {
                s.Insert(i => i.HasName("HomeownerContactDetailCreate_sp", "monarch"));
                s.Update(u =>
                {
                    u.HasName("HomeownerContactDetailUpdate_sp", "monarch");
                    u.Parameter(p => p.Id, "RelationKey");
                    u.Parameter(p => p.Version, "Version");
                });

                s.Delete(i =>
                {
                    i.HasName("HomeownerContactDetailDelete_sp", "monarch");
                    i.Parameter(p => p.Id, "RelationKey");
                    i.Parameter(p => p.Version, "Version");
                });
            }); 

我在.NET核心中遇到的问题是没有Map()函数和MapToStoredProcedures()函数。我不确定从这里到哪里才能将实体映射到两个单独的表,以及EF Core如何映射procs (或者它甚至以相同的方式映射procs )。

我试图用这段代码进行实体拆分,但是'm‘lamba表达式生成了一个TableBuilder对象,该对象只有两个方法: m.ExcludeFromMitigations()和m.GetType()。

代码语言:javascript
复制
pfeEntity.ToTable("dbo.PhoneFaxEmail");
            pfeEntity.Property(b => b.Id).HasColumnName("RelationKey");
            pfeEntity.Property(b => b.Value).HasColumnName("Value");

            pfeEntity.ToTable("HomeownerContactDetails_vw", "monarch", m =>
            {

                m.Property(b => b.BlogId).HasColumnName("Id");
                m.Property(b => b.Url);
            });

任何帮助都将不胜感激!(即使我以完全错误的方式来处理这件事,就像我说的那样,完全是新的,我想要学习所有关于EFCore的知识!)

EN

回答 1

Stack Overflow用户

发布于 2020-12-01 03:37:50

您可以使用存储过程的属性声明DbSet并调用

Context.DbSetName.FromSqlRaw(“执行yourStoredProcedure")

并且它将被映射到声明的DbSet模型。

请参阅此问题中的示例:Generating and accessing stored procedures using Entity framework core

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64976861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档