c# - OnDelete 的 EF Core 注释
问题描述
我有一个注释问题:
modelBuilder.Entity<FirstClass>()
.HasOne(f => f.SecondClass)
.WithOne(s => s.FirstClass)
.HasForeignKey<FirstClass>(f => f.SecondClassId)
.OnDelete(DeleteBehavior.Cascade);
如何用注释写这个?我没有找到 OnDelete 的注释。
解决方案
尝试这个 :
你的模型
public class FirstClass
{
[Key]
public int Id { get; set; }
public int SecondClassId { get; set; }
[ForeignKey(nameof(SecondClassId))]
[InverseProperty("FirstClasses")]
public virtual SecondClass SecondClass { get; set; }
}
public class SecondClass
{
[Key]
public int Id { get; set; }
[InverseProperty(nameof(FirstClass.SecondClass))]
public virtual ICollection<FirstClass> FirstClasses { get; set; }
}
如果您只想拥有一个第一和一秒钟,请尝试此代码。但我不推荐它,因为很难找到错误。
public class FirstClass
{
[Key]
public int Id { get; set; }
public int SecondClassId { get; set; }
[ForeignKey(nameof(SecondClassId))]
[InverseProperty("FirstClass")]
public virtual SecondClass SecondClass { get; set; }
}
public class SecondClass
{
[Key]
public int Id { get; set; }
[InverseProperty(nameof(FirstClass.SecondClass))]
public virtual FirstClass FirstClass { get; set; }
}
您的数据库上下文:
public class FirstClassDbContext : DbContext
{
public FirstClassDbContext()
{
}
public FirstClassDbContext(DbContextOptions<FirstClassDbContext> options)
: base(options)
{
}
public DbSet<FirstClass> FirstClasses { get; set; }
public DbSet<SecondClass> SecondClasses { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=localhost;Database=FirstClass;Trusted_Connection=True;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<FirstClass>(entity =>
{
entity.HasOne(d => d.SecondClass)
.WithMany(p => p.FirstClasses)
.HasForeignKey(d => d.SecondClassId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_FirstClass_SecondClass");
});
// or for one to one you can use yours, but I don't recommend it since
//it will be hard to find the errors and it will not do anything for you.
//Only confusing queries.
modelBuilder.Entity<FirstClass>()
.HasOne(f => f.SecondClass)
.WithOne(s => s.FirstClass)
.HasForeignKey(d => d.SecondClassId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_FirstClass_SecondClass");
}
}
推荐阅读
- c# - 在小于 O(n) 的时间内找到最大值,同时在无序列表中快速插入/删除
- c++ - 在运行时决定返回类型是右值还是左值时,如何避免不必要的复制?
- c# - 在 C# 中本地化 Attributes 的字符串属性
- python - 如何打印出所有列表
- python - 某些系统上 pywinauto 导致的 Py2Exe 错误:“AttributeError: 'module' object has no attribute 'CUIAutomation”
- r - 使用 Shiny 和 selectinput 添加 DT 扩展
- c++ - 在一大串字符串中找到 N 个最常出现的长度为 K 的子串
- amazon-web-services - 我如何知道 SQS 是否有新消息?
- python - How do I access items of a dictionary using items from a tuple?
- python - 带有烧瓶的 rets-python 不能作为 json 返回