فراخوانی Stored procedure و Table Value Function در EF Code First
نویسنده: آرش مصیر
تاریخ: ۱۳۹۴/۰۱/۰۳ ۱۴:۵۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionsConvention<MyContext>("dbo"));
} [DbFunction("MyContext", "CustomersByZipCode")]
public IQueryable<Customer> CustomersByZipCode(string zipCode)
{
var zipCodeParameter = zipCode != null ?
new ObjectParameter("ZipCode", zipCode) :
new ObjectParameter("ZipCode", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext
.CreateQuery<Customer>(
string.Format("[{0}].{1}", GetType().Name,
"[CustomersByZipCode](@ZipCode)"), zipCodeParameter);
}
public ObjectResult<Customer> GetCustomersByName(string name)
{
var nameParameter = name != null ?
new ObjectParameter("Name", name) :
new ObjectParameter("Name", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.
ExecuteFunction<Customer>("GetCustomersByName", nameParameter);
} context.Database.ExecuteSqlCommand(
"CREATE PROCEDURE [dbo].[GetCustomersByName] @Name nvarchar(max) AS " +
"SELECT [Id], [Name], [ZipCode] " +
"FROM [dbo].[Customers] " +
"WHERE [Name] LIKE (@Name)");
context.Database.ExecuteSqlCommand(
"CREATE FUNCTION [dbo].[CustomersByZipCode](@ZipCode nchar(5)) " +
"RETURNS TABLE " +
"RETURN " +
"SELECT [Id], [Name], [ZipCode] " +
"FROM [dbo].[Customers] " +
"WHERE [ZipCode] = @ZipCode");