关联后的新列问题

时间:2012-08-03 19:32:36

标签: c# sql database ado.net

我在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]

1 个答案:

答案 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等关系数据库处理它们的方式。