我将如何映射实体框架5中的以下关系?
public class Item { public int Id { get; set; } public int? ParentItemId { get; set; } public string Value { get; set; } public Item ParentItem { get; set; } public List<Item> ChildItems { get; set; } }
我试过这个:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Item>() .HasOptional(i => i.ParentItem) .WithMany(i => i.ChildItems) .HasForeignKey(i => i.ParentItemId); }
和这个:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Item>() .HasMany(i => i.ChildItems) .WithOptional(i => i.ParentItem) .HasForeignKey(i => i.ParentItemId); }
这都导致了这个错误:
引用约束的从属角色中的所有属性的类型必须与主体角色中相应的属性类型相同.
public partial class Item { public Item() { this.ChildItems = new HashSet<Item>(); } public int Id { get; set; } public Nullable<int> ParentItemId { get; set; } public string Value { get; set; } public virtual ICollection<Item> ChildItems { get; set; } public virtual Item ParentItem { get; set; } }
解决方法
原文地址:https://www.jb51.cc/csharp/97024.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。