-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Map inserts, updates, and deletes (CUD operations) to stored procedures #245
Comments
IMHO one of the most useful features of EF 6 is wrapping stored procedure into DbContext-based class methods. So it would be better to include such feature in EF 7 and if it's possible make two improvemtnts: |
Also a good idea would be to add User Defined Table Type support for Stored Procedure parameters when generating the DbContext-based class methods using the edmx Database first code generator. |
Note: Support for stored procedures with client composition on |
Where I can find any example of using stored procedures with client composition on DbSet in entity framework 7 context? |
There are a few examples in the functional tests FromSqlSprocQueryTestBase.cs. The general pattern is to call the or command text format string and parameters: This feature depends on the generic type of the |
Code with FromSql is outside of the context class (myContext), am I right? |
@Aristarh71 FromSql uses your context, and you can always hide it away in a method on your context: public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public IEnumerable<Blog> FindBlogs(string searchTerm)
{
return this.Blogs.FromSql("SELECT * FROM dbo.SearchBlogs(@p0)", searchTerm);
}
} |
Are there any plans yet to provide a way to consume stored procedures without having to set up a real entity type in the model builder? So that we only get the mapping capabilities, but leave out redundant stuff like the whole change tracker? I already add a So ideally, I would just like to be able to define “mapping entities” (I have no idea how these are actually called), that don’t do anything except provide the definitions when EF needs to map a result onto that type. This would then also mean that normal entity restrictions would not be necessary (e.g. having no primary key—which is perfectly reasonable for non-tracked items from a stored procedure). |
@poke I think that is an interesting idea... it's probably also something you want when you map views (or at lease non-updateable views). We'll keep that in mind when we come to these features. |
RE: mapping capabilities/non-updateable views This would be a great feature, just map to a type, key or no key In our case we want to hide the keys sometimes for a read-only view of the result |
+1 for OUTPUT support. As for a real world example: When doing paging using stored procedures, we need to run 2 queries. One to get the paged entities and another to get the total row count of unpaged entities to build a pager. By passing an This is just one example. I'm sure many will benefit this if implemented. |
@dealdiane I would recommend filing a separate bug if your main interest is to have output parameters supported in |
+1 for adding Stored Proc Async/Await Support |
I reverse-enginered an existing SQL Server database and added the model classes and context class to my MVC 6 project. This is my controller constructor, I assume DI will take care of injecting the context (which is registered as a service in StartUp.cs) public ReportsController(akzent_reportsContext context) Now on a controller method I'm trying this: IEnumerable results = _context.FromSql("SELECT * FROM dbo.MyFunctionName(@p0)", "something"); But I get this compilation error: 'akzent_reportsContext' does not contain a definition for 'FromSql' and no extension method 'FromSql' accepting a first argument of type 'akzent_reportsContext' could be found (are you missing a using directive or an assembly reference?) Reportes.DNX 4.5.1, Reportes.DNX Core 5.0 I've already added the EntityFramework.Relational 7.0.0-rc1-final package to the project, and in the controller I am using Microsoft.Data.Entity; What am I missing? Thanks for any insight. |
The reason for this is that EF does need to know the resulting entity type it should materialize from the SQL statement. This also means that you—currently—need to declare entities for your stored procedure result. |
a |
Does anyone know where I can find source code project to download the uses the FromSQl to call a stored procedure that actually compiles and works, |
As explained above, you can just call Otherwise, this issue is used to track the progress for stored procedure progress, so it’s not really the right place to ask for individual usage assistance. |
I am using EF Core in a windows class library and not a web class library. |
I am looking to call a StroredProcedure not an sql statement. Is there a working code example available for download that show FromSql calling a stored procedure? |
See the functional stored procedure tests on how to consume stored procedures. As I already said, you need to run it on a |
I did not say run it from the DBContext. At least I did think I said that. The reason I could not find the FromSQL ion the entity was because an extension in an assembly was not loaded. |
Add sproc support to runtime and compiled models Add sproc support to relational model Part of #245
Add sproc support to runtime and compiled models Add sproc support to relational model Fixed property overrides not taking the default schema into account Changed EntityType.ShortName() to not include the generic argument Part of #245
Add sproc support for Output and InputOutput parameters Add sproc support to runtime and compiled models Fixed property overrides not taking the default schema into account Changed EntityType.ShortName() to not include the generic argument Part of #245
Add sproc support for Output and InputOutput parameters Add sproc support to runtime and compiled models Fixed property overrides not taking the default schema into account Changed EntityType.ShortName() to not include the generic argument Part of #245
Closes dotnet#245 Closes dotnet#28435 Co-authored-by: Andriy Svyryd <AndriySvyryd@users.noreply.github.com>
Closes dotnet#245 Closes dotnet#28435 Co-authored-by: Andriy Svyryd <AndriySvyryd@users.noreply.github.com>
Note: Some of the features tracked in this issue could help with using EF Core with database views. However, the feature is not limited to database views and its completion would not mean that every aspect of database view support has been implemented. See #827 for an overview of the areas where EF Core interacts with database views.
Feature description
(added by @divega on Sep 4, 2014)
This is a general meta-issue for enabling better support for working with stored procedures in EF Core, with an emphasis on mapping stored procedures to parts of the EF Core model as opposed to using them in an ad hoc manner, which is covered in other issues. There are different aspects of stored procedures support than should be consider separately, e.g.:
FromSql
)Backlog
Note that for data retrieval stored procedures aren't generally considered composable on the store i.e. it wouldn't normally be possible to reference them in LINQ queries without causing all the further processing to switch to the client (#621 and #622 cover composable functions) but with our compensating LINQ provider it could be possible some day to enable mapping specific LINQ patterns to stored procedures calls, e.g.:
Could cause a stored procedure
OrdersByCustomerId(int @customerId)
to be invoked.API proposal
(added by @AndriySvyryd on May 6, 2022)
The text was updated successfully, but these errors were encountered: