关于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有什么不同