我已使用级联删除编写了MVC5
Internet应用程序,并收到以下错误:
Unable to cast object of type 'System.Collections.Generic.List`1[TestDeleteForeignKeyReferences.Models.Room]' to type 'TestDeleteForeignKeyReferences.Models.Room'.
这是我的上下文类:
public class MyDatabaseContext : DbContext
{
public DbSet<House> houses { get; set; }
public DbSet<Room> rooms { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<House>()
.HasOptional(x => x.rooms)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
}
}
这是我的House
课程:
public class House
{
[Key]
public int Id { get; set; }
public string name { get; set; }
public virtual ICollection<Room> rooms { get; set; }
public House()
{
rooms = new List<Room>();
}
}
这是我的Room
课程:
public class Room
{
[Key]
public int Id { get; set; }
public int roomNumber { get; set; }
public virtual House house { get; set; }
}
尝试在以下创建代码中向数据库添加House
时发生错误:
db.houses.Add(house);
如果我在上下文类中没有OnModelCreating
方法,则不会发生错误。
我可以帮助您使用此代码。
答案 0 :(得分:0)
您想要与可选主体建立一个(房屋)到多个(房间)关系(房间在房间是可选的)。配置应该是。
modelBuilder.Entity<House>()
.HasMany(x => x.rooms)
.WithOptional(x => x.house)
.WillCascadeOnDelete(true);