有人可以帮助我写正确的代码DeleteBehavior.ClientCascade请.我有两个类Account
和Schedule
定义如下(Account
可以有许多Schedule
对象):
public class Account : IdentityUser
{
public string Title { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Schedule> Schedules { get; set; }
}
public class Schedule
{
public string AccountAccountId { get; set; }
public int ScheduleId { get; set; }
public DateTime Date { get; set; }
}
... and the context
public class DataContext : IdentityDbContext<Account>
{
public DbSet<Account> Accounts { get; set; }
public DbSet<Schedule> Schedules { get; set; }
public DataContext(IConfiguration configuration, DbContextOptions options) : base(options)
{
Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sqlite database
options.UseSqlite(Configuration.GetConnectionString("WebApiDatabase"));
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//modelBuilder.Entity<Account>().HasMany(e => e.RefreshTokens).WithOne(e => e.Account).IsRequired();
modelBuilder.Entity<Schedule>()
.HasOne(b => b.Account)
.HasMany(a => a.Schedules) <--- Error
.OnDelete(DeleteBehavior.ClientCascade); <--- Error
}
}
字符串
我正在关注这篇文章link,但在尝试执行以下操作时,我的DataContext
出现错误:
modelBuilder.Entity<Schedule>()
.HasOne(b => b.Account)<--- error
.HasMany(a => a.Schedules)
.OnDelete(DeleteBehavior.ClientCascade);
型
2条答案
按热度按时间knpiaxh11#
此文档不完整。也许您应该先尝试此https://www.learnentityframeworkcore.com/configuration/one-to-many-relationship-configuration。要定义一对多关系。您需要像下面这样创建Schedule类
字符串
在这里使用
Account?
使foreignkey AccountId可为空。通常使用“s”代表“schedule”,并且您的schedule类现在有一个“Account”字段。
型
或
型
它们有相同的结果。必须首先使用
Has..
作为实体的后面,然后使用With
。您的代码实际上使用了2Has...
方法。如果没有将
?
添加到Account?
以使其为空,则.OnDelete(DeleteBehavior.ClientCascade);
可能会出错。nhaq1z212#
这对我来说是有效的,无需修改
Schedule
类:字符串