2017-08-15 66 views
0

我打电话从EF核心1.1一个存储过程,下面就https://docs.microsoft.com/en-us/ef/core/querying/raw-sql实体框架的核心存储过程无需DbSet

的建议,但我创建了一个类专门从存储过程返回的数据形状相匹配

List<MyStoredProcResultType> results = context.MyStoredProcResultType 
    .FromSql("EXECUTE dbo.MyStoredProc {0}", someParam) 
    .ToList(); 

但这意味着我必须建立在ContextMyStoredProcResultType一个DbSet,现在它是合法的实现代码

context.MyStoredProcResultType.Where(..)

但当然这是行不通的。

有没有办法调用存储过程对Context而不是DbSet并将结果放入我创建的类型?

+0

从EF核心2.0不可能参见https://github.com/aspnet/EntityFramework/issues/1862 – Smit

+0

@Smit如果你想把它放在答案中,我会接受。谢谢 – Bryan

回答

1

目前,在EF Core 2.0 RTM版本中,FromSql只能与您的模型中定义为EntityType的类型一起使用。这种限制是因为EF Core具有关于EntityType的元数据并知道如何实现它们。所以对于任何其他类型(如自定义DTO /结果类型),FromSql不起作用。

这是EF Core GitHub存储库上的tracking issue,它正在跟踪您正在查找的内容。

EF Core 2.1.0正打算为查询视图添加一些支持。 Tracking issue。如果您可以让EF Core了解您在模型构建过程中使用的自定义类型,那么可以启用类似于您的场景。它不会映射为EntityType/Table,但EF Core仍然会计算它的元数据以支持上述查询。