EF6 CodeFirst一对多MySQL外键约束失败
我正在从现有数据库到CodeFirst进行映射,我遇到了一对多关系的问题。
System.Data.Entity.Infrastructure.DbUpdateException:更新条目时发生错误。 有关详细信息,请参阅内部exception —> System.Data.Entity。 Core.UpdateException:更新条目时发生错误。 有关详细信息,请参阅内部exception —> MySql.Data.MySqlClient.MySqlException:无法添加或更新子行:外键约束失败
我有一个像这样的T_USER实体。
public partial class T_USER{ public T_USER(){ this.T_OBJECTS = new HashSet (); this.T_OBJECTS1 = new HashSet (); } [Key] public int ID { get; set; } public string Name { get; set; } public virtual ICollection T_OBJECTS { get; set; } public virtual ICollection T_OBJECTS1 { get; set; } }
我也有这样的T_OBJECT实体。
public partial class T_OBJECT (){ [Key] public int ID { get; set; } [Required] public int USER1 { get; set; } [Required] public int USER2 { get; set; } [ForeignKey("USER1")] public virtual T_USER T_USER1 { get; set; } [ForeignKey("USER2")] public virtual T_USER T_USER2 { get; set; } }
使用此DataAnnotations,我有一个DBUpdateException“字段列表中的未知列T_USER_OID”
我发现,如果我的数据库字段名称不符合Code First约定,我必须使用Fluent API实现一对多关系,并且我编码如此。
public class T_OBJECT_Map : EntityTypeConfiguration { public T_OBJECT_Map() { this.HasRequired(M => M.T_USER) .WithMany(U => U.T_OBJECTS) .HasForeignKey(M => M.USER1); this.HasRequired(M => M.T_USER1) .WithMany(U => U.T_OBJECTS1) .HasForeignKey(M => M.USER2); } }
使用此代码,我有一个例外,我在这个问题的开头提到过。
我还尝试使用此代码将DBInitializer设置为null,以防止EF尝试在数据库中写入但它失败并具有相同的exception
上述就是C#学习教程:EF6 CodeFirst一对多MySQL外键约束失败分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
Database.SetInitializer(null);
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/988509.html