C# 在实体框架核心中执行存储过程,而不需要映射到dbset
我正在研究.NET核心,实体框架核心。我有一个需要从.NET类执行的存储过程。我的存储过程接受“上下文”的数量,我不知道如何处理这个问题,尽管我有dataView,这是最后一个例外 我想知道我是否可以使用dataView而不是context.dataModel类,当前实现(context.Claims.FromSql) 数据视图 存储过程调用 新更新 moduleContext类 您可以利用EF Core 2.1中引入的 首先,您需要将类注册为查询类型:C# 在实体框架核心中执行存储过程,而不需要映射到dbset,c#,stored-procedures,.net-core,entity-framework-core,C#,Stored Procedures,.net Core,Entity Framework Core,我正在研究.NET核心,实体框架核心。我有一个需要从.NET类执行的存储过程。我的存储过程接受“上下文”的数量,我不知道如何处理这个问题,尽管我有dataView,这是最后一个例外 我想知道我是否可以使用dataView而不是context.dataModel类,当前实现(context.Claims.FromSql) 数据视图 存储过程调用 新更新 moduleContext类 您可以利用EF Core 2.1中引入的 首先,您需要将类注册为查询类型: modelBuilder.Query&l
modelBuilder.Query<ClaimDataView>();
更新(EF Core 3.x+): 从EF Core 3.0开始,查询类型已更改并重命名为,因此相应的代码为
modelBuilder.Entity<ClaimDataView>().HasNoKey().ToView(null);
modelBuilder.Entity().HasNoKey().ToView(null);
及
var query=Context.Set().FromSql(…);
如果您不在2.1版上,则需要添加:
public DbSet<ClaimDataView> ClaimDataView { get; set; }
非常感谢你把我带向正确的方向,但是我仍然没有得到任何。。。我已经更新了我的问题。。。请参阅newUpate标题下的代码。。。我在模型类中添加了,但没有为ClaimDataView创建任何配置。我不确定我是否需要它,但有错误。。。请参阅上文,它不应为
ClaimDataView
创建DbSet
。确保没有dbset注意到更新的代码在某些部分使用UserDataView
,在其他部分使用ClaimDataView
。打字错误还是新异常的原因?请注意,FromSql
已替换为FromSqlInterpolated
和FromSqlRaw
@EgorPavlikhin。我想这取决于您试图做什么。在这种情况下,避免使用DbSet的原因是不将实体映射到表。无键类型向EF模型注册您的类型,而无需在DB端为其创建表。然后可以对您的类型使用存储过程。
var query = Context.Query<UserDataView>().FromSql("EXECUTE dbo.ListUserClaims @userId=@UserVal, @clientId=@ClientVal, @consultationId=@ConsultationVal"
, userParam, clientParam, consultationParam);
System.InvalidOperationException: Cannot create a DbSet for 'UserDataView' because this type is not included in the model for the context.
at Microsoft.EntityFrameworkCore.Internal.InternalDbQuery`1.get_EntityType()
modelBuilder.Query<ClaimDataView>();
var query = Context.Query<ClaimDataView>().FromSql(...);
modelBuilder.Entity<ClaimDataView>().HasNoKey().ToView(null);
var query = Context.Set<ClaimDataView>().FromSql(...);
public DbSet<ClaimDataView> ClaimDataView { get; set; }
[NotMapped]
public class ClaimDataView