我正在将我们的EntityFrameworkCore重写到webapis核心并使用webapis 5.0。在我们之前的迭代中,我们使用了EntityFramework 6。我们正在移动这个应用程序,这样我们就可以在azure上托管它了。
我是EFCore的新手,注意到了一些我似乎无法解决的不同之处。
我们有一个实体,它将使用来自两个表的映射,一个是视图,另一个是对象所在的实际表。最后一部分包含在dbo.PhoneFaxEmail表中插入、更新和删除条目的存储过程。
下面是前面的EF6代码。
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()。
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的知识!)
发布于 2020-12-01 03:37:50
您可以使用存储过程的属性声明DbSet并调用
Context.DbSetName.FromSqlRaw(“执行yourStoredProcedure")
并且它将被映射到声明的DbSet模型。
请参阅此问题中的示例:Generating and accessing stored procedures using Entity framework core
https://stackoverflow.com/questions/64976861
复制相似问题