【发布时间】:2016-03-30 15:36:50
【问题描述】:
我想实现一个单向的一对一关系;但是级联删除不起作用。
我有以下课程:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Street { get; set; }
//I don't want the StudentId foreign key or the property of Student class here
}
在我的 Context 类中,我正在映射这样的关系:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasRequired(s => s.Address)
.WithOptional()
.Map(m => m.MapKey("Address_Id"))
.WillCascadeOnDelete();
}
由于某种原因,当student 对象被删除时,它并没有删除address。
此外,我还想在Student 类中添加外键属性(即AddressId),如下所示:
[ForeignKey("Address")]
[Column("Address_Id")]
public string AddressId { get; set; }
但是,当我尝试添加新迁移时出现此错误:
Address_Id:名称:类型中的每个属性名称必须是唯一的。属性名称“Address_Id”已定义。
我相信我把事情搞混了(MapKey 和 AddressId 的属性)。但是,我不知道如何解决这个问题。
我经历了this SO question和this article;但是,到目前为止还没有运气。
链接到DotNetFiddle。由于没有数据库,它不会工作。
【问题讨论】:
标签: c# entity-framework-6