C# 简单模型中的EF6外键约束

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

我正在编写一个简单的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 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);
}