C# 简单模型中的EF6外键约束
我正在编写一个简单的MVC5互联网应用程序。以下是我的模型:C# 简单模型中的EF6外键约束,c#,foreign-keys,asp.net-mvc-5,virtual,dbset,C#,Foreign Keys,Asp.net Mvc 5,Virtual,Dbset,我正在编写一个简单的MVC5互联网应用程序。以下是我的模型: public class House { [Key] public int Id { get; set; } public string name { get; set; } public virtual ICollection<Room> rooms { get; set; } public int itemId { get; set; } public virtual I
public class House
{
[Key]
public int Id { get; set; }
public string name { get; set; }
public virtual ICollection<Room> rooms { get; set; }
public int itemId { get; set; }
public virtual Item item { get; set; }
public House()
{
rooms = new List<Room>();
}
}
public class Room
{
[Key]
public int Id { get; set; }
public int roomNumber { get; set; }
public int houseId { get; set; }
public virtual House house { get; set; }
public int itemId { get; set; }
public virtual Item item { get; set; }
}
public class Item
{
[Key]
public int Id { get; set; }
public string name { get; set; }
}
能帮我正确地编码吗
提前谢谢
编辑
我现在已将ForeignKey
属性添加到字段外键字段:
public class House
{
[Key]
public int Id { get; set; }
public string name { get; set; }
public virtual ICollection<Room> rooms { get; set; }
public int itemId { get; set; }
[ForeignKey("itemId")]
public virtual Item item { get; set; }
public House()
{
rooms = new List<Room>();
}
}
public class Room
{
[Key]
public int Id { get; set; }
public int roomNumber { get; set; }
public int houseId { get; set; }
[ForeignKey("houseId")]
public virtual House house { get; set; }
public int itemId { get; set; }
[ForeignKey("itemId")]
public virtual Item item { get; set; }
}
public class Item
{
[Key]
public int Id { get; set; }
public string name { get; set; }
}
公共类房屋
{
[关键]
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection房间{get;set;}
公共int itemId{get;set;}
[外键(“项目ID”)]
公共虚拟项项{get;set;}
酒店()
{
房间=新列表();
}
}
公共教室
{
[关键]
公共int Id{get;set;}
public int roomNumber{get;set;}
public int houseId{get;set;}
[外籍钥匙(“房号”)]
公共虚拟房屋{get;set;}
公共int itemId{get;set;}
[外键(“项目ID”)]
公共虚拟项项{get;set;}
}
公共类项目
{
[关键]
公共int Id{get;set;}
公共字符串名称{get;set;}
}
我仍然遇到同样的错误。我已经解决了。我需要在上下文类中禁用级联删除 代码如下:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<House>()
.HasRequired(c => c.item)
.WithMany()
.WillCascadeOnDelete(false);
modelBuilder.Entity<Room>()
.HasRequired(s => s.item)
.WithMany()
.WillCascadeOnDelete(false);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasRequired(c=>c.item)
.有很多
.WillCascadeOnDelete(假);
modelBuilder.Entity()
.HasRequired(s=>s.item)
.有很多
.WillCascadeOnDelete(假);
}
您需要多少ID,房间对象中的ItemId和具有ID属性的Item。ItemId用于项目对象,ID是整个房间对象的主键。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<House>()
.HasRequired(c => c.item)
.WithMany()
.WillCascadeOnDelete(false);
modelBuilder.Entity<Room>()
.HasRequired(s => s.item)
.WithMany()
.WillCascadeOnDelete(false);
}