Linq to Entity-执行存储过程

来源:互联网 发布:java安装失败 卸载 编辑:程序博客网 时间:2024/06/12 07:05

1.在model中创建存储过程Model,将存储过程与实体进行映射,名称为存储过程名_Result:其中的属性是存储过程的返回值

create procedure "Ten Most Expensive Products" AS  SET ROWCOUNT 10SELECT Products.ProductName AS TenMostExpensiveProducts, Products.UnitPrice  FROM Products  ORDER BY Products.UnitPrice DESC  

    public partial class Ten_Most_Expensive_Products_Result    {        public string TenMostExpensiveProducts { get; set; }        public Nullable<decimal> UnitPrice { get; set; }    }
2.在DbContext子类中创建执行方法:传递存储过程名:Ten_Most_Expensive_Products

       public virtual ObjectResult<Ten_Most_Expensive_Products_Result> Ten_Most_Expensive_Products()        {            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Ten_Most_Expensive_Products_Result>("Ten_Most_Expensive_Products");        }
3.测试执行存储过程:

        static void TestProc()        {            using (NorthwindEntities NWEntities = new TestLINQToEntitiesApp.NorthwindEntities())            {                IEnumerable<Ten_Most_Expensive_Products_Result> tenProducts = from p in                                  NWEntities.Ten_Most_Expensive_Products()                                  select p;                foreach (Ten_Most_Expensive_Products_Result p in tenProducts)                {                    Console.WriteLine("Product Name: {0}, Price: {1}", p.TenMostExpensiveProducts, p.UnitPrice);                }            }                   }
4.如果存储过程返回的实体在model中已经存在了,则可以不用新建一个model, 直接利用原来的Model, 并直接在Dbcontext子类中创建执行方法:

Create PROCEDURE [dbo].[GetProduct]   (   @ProductID int   ) AS   SET NOCOUNT ON   Select * from Products where ProductID = @ProductID 

       public virtual ObjectResult<Product> GetProduct(Nullable<int> productID)        {            var productIDParameter = productID.HasValue ?                new ObjectParameter("ProductID", productID) :                new ObjectParameter("ProductID", typeof(int));                return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Product>("GetProduct", productIDParameter);        }
Product getProduct = NWEntities.GetProduct(1).FirstOrDefault();
此时 由GetProduct得到的product是与Dbcontext关联的,对它进行任何操作都会执行数据库操作从而修改数据库的数据。




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 极限竞速6闪退怎么办 两个睾丸都碎了怎么办 快递退回去了钱怎么办 想登录老公微信怎么办 养狗家里味道大怎么办 实在不想养狗了怎么办 培训完不想干了怎么办 干了几天想离职怎么办 药流开始流血了怎么办 药流期间同房了怎么办 想学韩语可是没基础怎么办 鞋子多买了一双怎么办 胳膊抻着了怎么办妙招 胳膊抻筋了 很疼怎么办 干活胳膊抻筋了怎么办 胳膊上的筋扭了怎么办 一岁宝宝脖子歪怎么办 3岁宝宝轻微斜颈怎么办 2岁宝宝轻微斜颈怎么办 肩膀劳损痛的厉害怎么办 颈后面有个囊肿怎么办 扭腰了怎么办有偏方吗 跑步机点加油了怎么办 高二了英语30分怎么办 苍蝇往人身上飞怎么办 25岁了写字好丑怎么办 我字写得超难看怎么办 高三体检有纹身怎么办 快高考了有纹身怎么办 艺考身上有纹身怎么办 初三考试考砸了怎么办 考差了我该怎么办 发票认购簿丢了怎么办 税率开错为17%了怎么办 增值税票开错了怎么办 发票名字写错了怎么办 红米2卡开机画面怎么办 三星s4字库坏了怎么办 百度云上传很慢怎么办 入户网线头断了怎么办 针织的衣服起球怎么办