gpt4 book ai didi

c# - 由外键 ef 4.3 组成的代码优先组合键

转载 作者:行者123 更新时间:2023-11-30 16:25:37 24 4
gpt4 key购买 nike

我在创建由 EF 4.3 代码中的外键组成的复合键时遇到问题。我想通过数据注释来解决这个问题。我找不到正确的数据注释,说明 EventID 是 Event 的外键,并且是 EventVote 表中主键的一部分。我如何完成这个

   public class EventVote
{

[Key, Column(Order = 0)]
[ForeignKey("Event")]
public int EventID { get; set; }

[Key, Column(Order = 1)]
[ForeignKey("User")]
public int UserID { get; set; }

[Required]
public DateTime VoteTime { get; set; }

[Required]
public bool Vote { get; set; }



public virtual Event Event { get; set; }
public virtual User User { get; set; }
}

错误在表“EventVotes”上引入 FOREIGN KEY 约束“EventVote_User”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束。查看以前的错误。

最佳答案

试试这个。您也可以将 ForeignKey 注释放在导航属性上并引用 FK 的名称。不确定它是否能解决您的问题,但值得一试 IMO

public class EventVote
{

[Key, Column(Order = 0)]
public int EventID { get; set; }

[Key, Column(Order = 1)]
public int UserID { get; set; }

[Required]
public DateTime VoteTime { get; set; }

[Required]
public bool Vote { get; set; }


[ForeignKey("EventID")]
public virtual Event Event { get; set; }
[ForeignKey("UserID")]
public virtual User User { get; set; }
}

编辑:从您的错误消息看来,您遇到的问题类似于一对一关系映射所发生的问题。请参阅这篇文章,了解如何使用 Fluent API 指定在每个关系的一侧禁用级联。

请参阅解决此问题的这篇文章。请注意,他们使用的是 Fluent API,可以代替数据注释来指定您的映射/关系,或者您可以使用数据注释,并在必要时使用 Fluent API 关闭级联/更新。

http://weblogs.asp.net/manavi/archive/2011/05/01/associations-in-ef-4-1-code-first-part-5-one-to-one-foreign-key-associations.aspx

关于c# - 由外键 ef 4.3 组成的代码优先组合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9711309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com