基于RIA的多层应用(三)--ADO.NET Entity Framework 操作

3 篇文章 0 订阅

生成了hzfz这个实体。如图:

(1)读取数据:

 

 hzfzEntities ent = new hzfzEntities();

            var result = from s1 in ent.SYS_MENU select s1;

            foreach (var item in result)

            {

                this.Response.Write(item.菜单名 + "<br/>");

            }

(2)插入数据:

 

            hzfzEntities ent = new hzfzEntities();

            RIATest.Web.Entity.SYS_MENU menu = new SYS_MENU();

            menu.ID = 8888;

            menu.URL = "";

            menu.菜单名 = "hello";

            ent.AddToSYS_MENU(menu);

            ent.SaveChanges();

XX有时报错:

错误太长了,完整的错误是:无法更新 EntitySet“Enterprise”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <InsertFunction> 元素。

XX失败的意外可能性:

 

1.出现情况为原表有主键,但是在创建表的视图时,没有设置视图表的ID为主键!
2.原表本身就没有设置主键

(3)更新:

 

 var res=(from s1 in ent.SYS_MENU where s1.菜单名=="hello" select s1).First();

            res.菜单名 = "myWorld";

            ent.SaveChanges();

(4) 删除:

 

 var res = (from s1 in ent.SYS_MENU where s1.菜单名 == "myWorld" select s1).First();

            ent.DeleteObject(res);

            ent.SaveChanges();

 

 

 

(5)关联操作:(关联可以通过数据库的外键操作实现,导入后会自动有关联)。如果导入的关联关系不是和希望的一样,说明数据库设计有问题。

 

 

       关联查询:

          hzfzEntities ent = new hzfzEntities();

            var result = (from s1 in ent.OrderSet select s1).First();

            result.Order_DetailsSet.Load();

            foreach (RIATest.Web.Entity.Order_DetailsSet item in result.Order_DetailsSet)

                this.Response.Write(item.ProductID + "<br/>");

     关联添加:

 

           hzfzEntities ent = new hzfzEntities();

            RIATest.Web.Entity.OrderSet os = new OrderSet();

            os.Id = 3;

            os.Name = "扬州";

            os.Order_DetailsSet.Add(new Order_DetailsSet() { ProductID=3});

            ent.AddToOrderSet(os);

            ent.SaveChanges();

     关联删除:

           var result = (from s1 in ent.OrderSet where s1.Id==5 select s1).First();

            result.Order_DetailsSet.Load();

            while (result.Order_DetailsSet.Count > 0)

                ent.DeleteObject(result.Order_DetailsSet.First());

            ent.DeleteObject(result);

            ent.SaveChanges();

     关联修改:

             var result = (from s1 in ent.OrderSet where s1.Id==2 select s1).First();

            result.Name = "北京";

            var item = (from s1 in result.Order_DetailsSet where s1.ProductID == 2 select s1).First();

            item.Id = 6;//因为没有其他字段,就用这个字段为例,实际上该字段不可修改。

            ent.SaveChanges();

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值