我在Visual Studio中创建了两个表TA和TB。在edmx文件中,我在TA和TB之间建立了1对多的关联。进行关联后,将在名为TAId
的TB中生成一个新列。
我只是想知道是否必须在数据库的TB表中添加该列?
编辑:我得到了例外:
nCeremony.msl(23,10):错误3004:从映射片段开始的问题 第23行:没有为Set中的属性CourseOption.MenuId指定映射 CourseOptions。
具有密钥(PK)的实体在以下情况下不会往返:
实体是[CeremonyDBModel.CourseOption]类型
Ceremony.msl(31,10): 错误3004:从第31行开始映射片段时出现问题:无映射 为Set Menus中的属性Menu.CeremonyId指定。
带钥匙的实体(PK) 在以下情况下不会往返:
实体是类型[CeremonyDBModel.Menu]
答案 0 :(得分:0)
通过让子表中的记录引用其父级来完成一对多关联。
考虑客户和购买的示例。客户可以进行多次购买,但每次购买只能属于一个客户。请考虑以下两个表:
customers purchases
============ ===========
id name id customer_id product
每位客户都有一个唯一的ID和名称。每次购买还具有唯一的ID和产品名称。但是,为了实现一对多关联,购买表必须也引用哪个客户进行了购买。你不能反过来这样做,或者你会有一些重复的客户名称,每个客户都参考一些购买。
例如:
customers purchases
============ ===========
id name id customer_id product
--- -------- --- ------------ --------
1 John 1 1 apple
2 Mary 2 1 orange
3 2 banana
在这个例子中,你可以看到约翰购买了一个苹果和一个橙子,玛丽购买了香蕉。
购买表需要customer_id
列来建立与customers表的关系。
通过在TA和TB表之间创建关联,Visual Studio为您创建了列TAid
,因为这就是MS SQL Server等关系数据库处理它们的方式。