Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多对多关系的模型绑定_C#_Asp.net Mvc 3_Entity Framework 4 - Fatal编程技术网

C# 多对多关系的模型绑定

C# 多对多关系的模型绑定,c#,asp.net-mvc-3,entity-framework-4,C#,Asp.net Mvc 3,Entity Framework 4,我有这样的桌子 License ------------ Id LicenseName DriversLicense ------------- Id LicenseId DriverId Drivers ----------- Id FirstName LastName 许可证表中有6个条目,现在我想为特定驾驶员的所有许可证选项创建带有“是/否”的单选按钮。桌子和桌子之间最好的关系是什么?(一个、一个、多个、多个)以及我将如何使用模型绑定显示单选按钮。正如我在评论中所发布的,您应该立

我有这样的桌子

License
------------
Id
LicenseName


DriversLicense
-------------
Id
LicenseId
DriverId


Drivers
-----------
Id
FirstName
LastName

许可证表中有6个条目,现在我想为特定驾驶员的所有许可证选项创建带有“是/否”的单选按钮。桌子和桌子之间最好的关系是什么?(一个、一个、多个、多个)以及我将如何使用模型绑定显示单选按钮。

正如我在评论中所发布的,您应该立即看到这一点。如果你不简单地停止你的工作,做一些学习

这是驱动程序和许可证之间的多对多关系,必须使用关系数据库(DriversLicense)中的连接表进行建模。从概念抽象的多对多被分解为两个一对多的驾驶人和驾照之间以及驾照和驾照之间

EFv4能够直接处理多对多,但在您的情况下不能这样做,因为您的连接表不仅包含外键列(LicenseID和DriverId),还包含其他列(Id)。仅当使用as对连接表进行建模时,EF才能隐藏连接表

DriversLicence
----------------
LicenceId
DriverId

其中,这两列构成复杂的主键。如果您在表中留下Id列,您的DriversLicense将作为其他实体公开。

Ladislav关于实体关系是正确的。如果希望这样做,则必须从关联表中删除Id字段。此外,在数据模型中,每个实体都需要有一个引用其他集合的导航属性:

public partial class Driver
{
     public int Id { get; set; }

     // other properties

     [UIHint("Licenses")]
     public virtual ICollection<License> Licenses { get; set; }
}
在控制器中,将
ViewBag.LicenseAll
设置为所有可能的许可选项。在驱动程序编辑视图中,您只需调用:

@Html.EditorFor(m=>m.Licenses)
您在模型上设置的UIHint将找到正确的局部视图,并将显示所有许可证选项选择为当前驱动程序设置的所有选项


我知道这个答案不能直接回答您的问题(使用单选按钮),但考虑到您的情况,我建议您这样做。

如果您对关系数据库有任何基本了解,您应该知道这些表之间的关系。如果你没有这样最低限度的理解,停止你当前的任务,去读一些关系数据库的入门读物,否则你将无法完成你的项目。是的,我有这种理解。但不确定如何在特定用户的单选按钮中显示您必须从定义单选按钮的许可证加载所有记录。然后,您必须向用户加载其DriverLicense/License,并将单选按钮设置为正确的值。我不明白显示单选按钮如何对应表之间关系的问题。仍然无法获取如何显示驾驶员的单选按钮值?如何从License表中显示单选按钮@RadioButton(这里是什么)?
@Html.EditorFor(m=>m.Licenses)