Asp.net mvc 在Entity Framework/.NET MVC中将不同的属性链接到同一个表

Asp.net mvc 在Entity Framework/.NET MVC中将不同的属性链接到同一个表,asp.net-mvc,entity-framework,objectquery,Asp.net Mvc,Entity Framework,Objectquery,我花了几个小时试图找到这个问题的答案,结果一无所获 我对.NET和MVC完全陌生——我完成了MvcMusicStore教程,现在开始从事一个更复杂但类似的项目。我这样说只是为了解释我在这方面的经验和知识水平低,希望任何回应都能考虑到这一点 无论如何,我遇到的问题是,我有一个表“Fixtures”,它有两个属性“TeamId1”和“TeamId2”,这两个属性都映射到另一个表“Team” 我想要的是,每个装置还包括Team1和Team2的团队数据。到目前为止,我一直在使用ObjectQuery的I

我花了几个小时试图找到这个问题的答案,结果一无所获

我对.NET和MVC完全陌生——我完成了MvcMusicStore教程,现在开始从事一个更复杂但类似的项目。我这样说只是为了解释我在这方面的经验和知识水平低,希望任何回应都能考虑到这一点

无论如何,我遇到的问题是,我有一个表“Fixtures”,它有两个属性“TeamId1”和“TeamId2”,这两个属性都映射到另一个表“Team”

我想要的是,每个装置还包括Team1和Team2的团队数据。到目前为止,我一直在使用ObjectQuery的Include方法来执行类似的操作,没有任何问题

然而,当我这样做的时候,我发现.NET或MVC或实体框架或其他什么东西都不高兴。经过多次实验,我发现只有当外键与它所引用的表具有相同的名称时,它才会起作用。基本上,我的属性必须具有名称“TeamId”,否则它将无法工作。如果我没有另一个必须映射到此表的属性,这不会是一个问题。我显然不能在一个表中有两个同名的属性。所以我被卡住了

我只能假设可以使用“TeamId”以外的属性名映射到表,但我找不到任何说明/以前的文章/文档来解释如何执行此操作

我已经考虑过将赛程数据分解,然后用一个赛程表,然后用一个单独的表来保存球队ID、分数等的可能性,但是考虑到每个赛程都不会有两个以上的球队,这似乎有点过分了。所以我称之为B计划

如果可能的话,我不想回避这个问题,因为使用EF和ObjectQuery实现这一点似乎并不合理。我还知道我可以手动创建查询,指定连接。不幸的是,我对LINQ的经验是有限的,而且到目前为止,每次我尝试LINQ时,一个表上的多个联接都不起作用

因此,我真正需要知道的是,是否有一些设置或代码可以用于实现上述功能,而无需求助于LINQ或重构Fixtures表

编辑:


此图显示了相关模型。目前:这是可行的,但是查询显然只返回一个链接到“TeamId1”列的团队实例。注释后的代码显示了我在模型中还需要的内容(就我以前有限的经验而言)。因此,我的模型包含两个单独的团队,链接到两个单独的列。

我认为您需要的是一些自定义映射,而不是框架提供的“按约定”映射

如果你装饰和添加一些属性到你的装置,它应该工作良好

像这样:

public int TeamId1 { get; set; }
public int TeamId2 { get; set; }

[ForeignKey("TeamId1")]
public Team Team1 { get; set; }

[ForeignKey("TeamId2")]
public Team Team2 { get; set; }

我认为您需要的是一些自定义映射,而不是框架提供的“按约定”映射

如果你装饰和添加一些属性到你的装置,它应该工作良好

像这样:

public int TeamId1 { get; set; }
public int TeamId2 { get; set; }

[ForeignKey("TeamId1")]
public Team Team1 { get; set; }

[ForeignKey("TeamId2")]
public Team Team2 { get; set; }

你能发布一个带有映射的模型截图吗?你能发布一个带有映射的模型截图吗?谢谢!这正是我需要的!谢谢这正是我需要的!