作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我与外键有一对一的关系,但 Cascade Delete
由于某种原因未启用。示例代码如下。
public class AppRegistration
{
public int AppRegistrationId { get; set; }
[Required]
[StringLength(50)]
[Display(Name = "Username")]
public string UserName { get; set; }
[Required]
[StringLength(100)]
public string Password { get; set; }
[StringLength(20)]
public string StudentOrAgent { get; set; }
// navigation properties
public virtual AppStatus AppStatus { get; set; }
public virtual Agreement Agreement { get; set; }
public virtual AnotherTable AnotherTable { get; set; }
}
public class Agreement
{
[Key]
[ForeignKey("AppRegistration")]
public int AppRegistrationId { get; set; }
public DateTime DateAgreed { get; set; }
public virtual AppRegistration AppRegistration { get; set; }
}
AppRegistrations
中删除条目时表我得到一个引用约束冲突。
[Required]
在依赖表中的导航属性上,但它没有做任何事情 -
Update-Database
命令显示
No pending code-based migrations.
信息。有任何想法吗?谢谢。
The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.AppStatus_dbo.AppRegistrations_AppRegistrationId". The conflict occurred in database "MVCapp", table "dbo.AppStatus", column 'AppRegistrationId'.
最佳答案
我决定解决 cascade delete
单独的示例项目中的问题。我发现以下博客和 MSDN 页面非常有用。
Code First
方法创建以下模型。
public class Category
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public virtual Book Book { get; set; }
}
public class Book
{
public int CategoryId { get; set; }
public string BookTitle { get; set; }
public string BookAuthor { get; set; }
public string BookISBN { get; set; }
public virtual Category Category { get; set; }
}
DbContext
- 派生类添加以下内容。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Book>()
.HasKey(t => t.CategoryId);
modelBuilder.Entity<Category>()
.HasRequired(t => t.Book)
.WithRequiredPrincipal(t => t.Category)
.WillCascadeOnDelete(true);
}
System.Data.Entity
、
System.Data.Entity.ModelConfiguration.Conventions
。)
Book
中还有一个外键。表带
ON DELETE CASCADE
启用。
Category
我使用的实体
WithRequiredPrincipal()
与
t => t.Category
参数,其中参数是从属表中的外键列。
WithRequiredPrincipal()
没有 一个参数,你会在
Book
中得到一个额外的列表,您将在
Book
中有两个外键指向
CategoryId
的表在
Category
table 。
关于entity-framework - code first 一对一启用级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16485831/
我是一名优秀的程序员,十分优秀!