专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > LINQ

关于linq访问视图对象结果重复有关问题

发布时间:2011-06-24 21:54:30 文章来源:www.iduyao.cn 采编人员:星星草
关于linq访问视图对象结果重复问题
关系:

表LOGER 
左关联 表LogerRole
左关联 表Role
左关联 表RoleMenu
左关联 表Menu

现希望通过Loger表的Loger查得对应所有Menu的MenuName数据.

在数据库的vLogerMenu视图中查询显示正常
数据库只有一个Loger,其ID为0时,以下只讨论单Loger的情况
MenuName
1
2
3
4
5

DBEntities myDBEntities = new DBEntities();
var result = from q in myDBEntities.vLogerMenu
select q;
comboBox_Menu.DataSource = result.ToList<vLogerMenu>();
comboBox1.DisplayMember = "MenuName";
comboBox1.ValueMember = "MenuID";

但是在程序中 用一个combobox保存其值时.结果为
MenuName
1
1
1
1
1

另:
如不使用视图,对单表查询
DBEntities myDBEntities = new DBEntities();
var result = from q in myDBEntities.menu
select q;
comboBox_Menu.DataSource = result.ToList<Menu>();
comboBox1.DisplayMember = "MenuName";
comboBox1.ValueMember = "MenuID";

则combobox元素为:
MenuName
1
2
3
4
5

为什么会这样呢..?
似乎在取 视图的时候 出现覆盖.

 然后我又进行了修改

DBEntities myDBEntities = new DBEntities();
  var result = from q in myDBEntities.vLogerMenu
  //select new { q.LogerID, q.MenuID, q.MenuName };
  select q;
  //comboBox1.DataSource = result.ToList<vLogerMenu>();

  List<vLogerMenu> vLogerMenu_List = new List<vLogerMenu>();
  foreach (var a in result)
  {
  vLogerMenu vLogerMenu_Temp = new vLogerMenu();
  vLogerMenu_Temp.MenuID = a.MenuID;
  vLogerMenu_Temp.MenuName = a.MenuName;
  vLogerMenu_List.Add(vLogerMenu_Temp);
  }
  comboBox1.DataSource = vLogerMenu_List;
  comboBox1.DisplayMember = "MenuID";
  comboBox1.ValueMember = "MenuID";

其结果为:
MenuName
1
2
3
4
5

为什么 直接 绑定视图的时候会 出现 重复现象呢?

------解决方案--------------------
没听说过表和表之间有左右关联的。。。。
------解决方案--------------------
如果设置断点Debug不能找出问题,
那就用SQL Server Profiler跟踪一下生成的ESql吧,看看Sql有什么不同
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: