C# 首先对属性'';关于类型'';无效。环境足迹6.1.3
我首先尝试使用EntityFramework6.1.3代码为体育应用程序创建数据库。当我试图使数据库是抛出我异常 类型“Match”的属性“HomeTeamId”上的ForeignKeyAttribute无效。在依赖类型“Match”上未找到导航属性“TeamId”。名称值应为有效的导航属性名称 我的团队课C# 首先对属性'';关于类型'';无效。环境足迹6.1.3,c#,entity-framework,C#,Entity Framework,我首先尝试使用EntityFramework6.1.3代码为体育应用程序创建数据库。当我试图使数据库是抛出我异常 类型“Match”的属性“HomeTeamId”上的ForeignKeyAttribute无效。在依赖类型“Match”上未找到导航属性“TeamId”。名称值应为有效的导航属性名称 我的团队课 public class Team { private ICollection<Match> matches; public Team() {
public class Team
{
private ICollection<Match> matches;
public Team()
{
this.matches = new HashSet<Match>();
}
public int Id { get; set; }
[Required]
[MinLength(5)]
[MaxLength(40)]
public string Name { get; set; }
public virtual ICollection<Match> Matches
{
get { return this.matches; }
set { this.matches = value; }
}
}
有人能帮我解决这个问题吗?你有两个外键
AwayTeamId
HomeTeamId
他们两个都在引用
TeamId
EntityFramework应该能够根据您所拥有的信息自行确定关系,因此请尝试删除ForeignKey
属性并尝试更新
或 阅读
ForeignKeyAttribute
/// <summary>
/// Denotes a property used as a foreign key in a relationship.
/// The annotation may be placed on the foreign key property and specify the associated navigation property name,
/// or placed on a navigation property and specify the associated foreign key name.
/// </summary>
编辑 我在本地复制了您的解决方案,删除外键属性和所有其他相关属性(包括Id本身)可以解决此问题
public virtual Arena Arena { get; set; }
public virtual Team HomeTeam { get; set; }
[Required]
[Range(0, 255)]
public byte HomeTeamScore { get; set; }
public virtual Team AwayTeam { get; set; }
[Required]
[Range(0, 255)]
public byte AwayTeamScore { get; set; }
正如你所看到的,没有AwayTeamId,没有HomeTeamId
这就是实体框架在后端生成的内容。。。你仍然有一对多的关系,测试一下,如果你有问题就告诉我
您有两个外键
AwayTeamId
HomeTeamId
他们两个都在引用
TeamId
EntityFramework应该能够根据您所拥有的信息自行确定关系,因此请尝试删除ForeignKey
属性并尝试更新
或 阅读
ForeignKeyAttribute
/// <summary>
/// Denotes a property used as a foreign key in a relationship.
/// The annotation may be placed on the foreign key property and specify the associated navigation property name,
/// or placed on a navigation property and specify the associated foreign key name.
/// </summary>
编辑 我在本地复制了您的解决方案,删除外键属性和所有其他相关属性(包括Id本身)可以解决此问题
public virtual Arena Arena { get; set; }
public virtual Team HomeTeam { get; set; }
[Required]
[Range(0, 255)]
public byte HomeTeamScore { get; set; }
public virtual Team AwayTeam { get; set; }
[Required]
[Range(0, 255)]
public byte AwayTeamScore { get; set; }
正如你所看到的,没有AwayTeamId,没有HomeTeamId
这就是实体框架在后端生成的内容。。。你仍然有一对多的关系,测试一下,如果你有问题就告诉我
如果我改变了,那么我还有一个例外。“无法将属性“HomeTeamId”配置为导航属性。该属性必须是有效的实体类型,并且该属性应具有非抽象的getter和setter。对于集合属性,该类型必须实现ICollection,其中T是有效的实体类型。”那么有什么例外?属性“HomeTeamId”不能配置为导航属性。该属性必须是有效的实体类型,并且该属性应该具有非抽象的getter和setter。对于集合属性,该类型必须实现ICollection,其中T是有效的实体类型。@evelikov92 Ok。。。试试这个
[ForeignKey(“HomeTeam”)]
和[ForeignKey(“AwayTeam”)]
新异常“其他信息:引入外键约束“FK_dbo.Matches_dbo.Teams_AwayTeam”在表上的“Matches”可能导致循环或多个级联路径。在删除时指定无操作,或在更新时指定无操作,或修改其他外键约束。”如果我改变了,那么我还有一个例外。“无法将属性“HomeTeamId”配置为导航属性。该属性必须是有效的实体类型,并且该属性应具有非抽象的getter和setter。对于集合属性,该类型必须实现ICollection,其中T是有效的实体类型。”那么有什么例外?属性“HomeTeamId”不能配置为导航属性。该属性必须是有效的实体类型,并且该属性应该具有非抽象的getter和setter。对于集合属性,该类型必须实现ICollection,其中T是有效的实体类型。@evelikov92 Ok。。。试试这个[ForeignKey(“HomeTeam”)]
和[ForeignKey(“AwayTeam”)]
新异常“其他信息:引入外键约束“FK_dbo.Matches_dbo.Teams_AwayTeam”在表上的“Matches”可能导致循环或多个级联路径。在删除时指定无操作,或在更新时指定无操作,或修改其他外键约束。”