EF核心:如何将项目添加到具有一对多关系的导航属性中



我正在尝试向导航属性中添加内容。

我想建立一个系统,允许用户在数据库中输入记录。一个记录至少有一个或多个许可证。因此,它具有一对多的关系。

我试图用许可证输入一个工作性质,但我得到了这个错误:

对象引用未设置为对象的实例

如何将项从Permit类传递到Record类?

类别

[Table("record" , Schema = "public")]
public class Record
{
[Key]
public string Serial_Num {get; set;}
public string job_nature {get; set;}
//navigation property
public ICollection<Permit> permits {get; set;}
}
[Table("permit" , Schema = "public")]
public class Permit
{
[Key]
public int id {get; set;}
public string Serial_Num {get; set;}
public string permit {get; set;}
//navigation property
[Required]
public Record Record {get; set;}
}

模型生成器

modelBuilder.Entity<Record>()
.HasMany(p => p.permits)
.WithOne(r => r.Record)
.HasForeignKey(p => p.Serial_Num)
.OnDelete(DeleteBehavior.Cascade);

部分代码(1对1关系试用(

// Record Class
Record objRecord = new Record();
objRecord.Serial_Num = "001";
objRecord.job_nature = "test";
// Permit Class
Permit objPermit = new Permit();
objPermit.Serial_Num = objRecord.Serial_Num;
objPermit.permit = "permit_test";
// I'm trying to include Permit into Record, but returns 'Object reference not set to an instance of an object' error.
objRecord.permits.Add(objPermit);
context.record.Add(objRecord);
context.SaveChanges();
[Table("record" , Schema = "public")]
public class Record
{
// Add the constructor to initialize permits
public Record()
{
permits = new HashSet<Permit>();
}

[Key]
public string Serial_Num {get; set;}
public string job_nature {get; set;}
//navigation property
public ICollection<Permit> permits {get; set;}
}

这个怎么样:

objRecord.permits = new List<Permit>()

然后添加到列表中。

最新更新