LINQ中的多对多数据绑定

时间:2010-10-27 13:07:06

标签: c# asp.net linq

我看了一遍并且无法找到一个看似常见问题的明确答案:如何在ASP.net中对多对多关系进行双向数据绑定?

我有以下数据库结构: LINQ Diagram

我目前正在编写一个用于编辑或添加用户记录的页面。名称和密码之类的数据绑定很简单,但我真正需要它才能显示所有PhoneGroup的列表并从列表中选择一个或多个。我该怎么做?

我尝试了CheckBoxList,但是虽然我可以显示PhoneGroups列表,但如何根据用户是否具有访问权限来绑定每个框的Checked状态?一些解决方案在CheckBoxList的OnDataBound事件中使用循环。如果我这样做,当检查状态发生变化时如何更新数据库?我可以采用蛮力方法并编写代码来做到这一点,但是有没有什么可以使这更简单?这似乎是一种常见的情况。

更新#1

我目前正在使用Devart's LinqConnect,但我愿意改变。后端数据库是MySQL。

1 个答案:

答案 0 :(得分:0)

是的,这是一个常见的场景,并且对该事件的绑定是我看到的解决方案。

当你在背景中描述代码所做的事情时,这很简单。您可以编写自己的自定义服务器控件,但这更加困难。

MVC可能会为您提供替代方案......

真的为什么不重新设计并且只返回他们允许的对象? 至于更新数据库中的项目,您需要更多地了解架构。但是ultimatley要更新你必须采取新项目的项目......你必须做这样的事情

public void StoreTheUpdatedData(YourBusinessObject theBusinessObject)
{
var yourDataContext = new DataContext()
var oldObject = (from i in yourDataContext.YourbusinessObjects
                where (blah equals blah to select your item and only your item)
                select i).First();

//repeat for all properties in the object
oldObject.Property = theBusinessObject.Property;

yourDataContext.SaveChanges();
}

代码谎言就是你需要做的更新。

保存方法因您使用的ORM而异...我认为linq2SSql使用commitChanges。我用了一段时间已经有一段时间了。