【发布时间】:2020-10-20 02:54:10
【问题描述】:
如何将种子数据添加到DbSet 并将其与另一个DbSet 记录绑定?
使用我的解决方案,ForeignKey 值已正确设置,但来自ObjectModel 的TypeModel 始终为null。另外,在我创建 ObjectTypeModel 之后,如何将对象添加到 ICollection 中,还是会从 EF Core 自动填充?
我的模型:
public class ObjectModel : BaseEntity
{
[Key]
public int Id { get; set;
public String Name { get; set; }
public String PreviewImage { get; set; }
public String TagName { get; set; }
// Foreign keys---
public int TypeId { get; set; }
public ObjectTypeModel TypeModel { get; set; }
//---
}
public class ObjectTypeModel : BaseEntity
{
[Key]
public int TypeModelId { get; set; }
public String Name { get; set; }
public String PreviewImage { get; set; }
public String TagName { get; set; }
public ICollection<ObjectModel> Objects { get; set; }
}
我的OnModelCreating()来自DbContext:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ObjectModel>()
.HasOne<ObjectTypeModel>(d => d.TypeModel)
.WithMany(dm => dm.Objects)
.HasForeignKey(dkey => dkey.TypeId);
}
我的播种数据方法:
context.Set<ObjectTypeModel>().AddRange(new ObjectTypeModel[]
{
new ObjectTypeModel()
{
TypeModelId = 1,
Name = "TestType",
PreviewImage = null,
TagName = "TestType"
}
});
context.SaveChangesAsync();
var objectTypeOne = context.ObjectTypes.SingleOrDefault(a => a.TypeModelId.Equals(1));
context.Set<ObjectModel>().Add(new ObjectModel
{
new ObjectModel() { Name="Test", PreviewImage = "null", TagName = "Test", TypeId = objectTypeOne.TypeModelId, TypeModel = objectTypeOne }
});
context.SaveChangesAsync();
尝试接收数据时的输出,其中 TypeModel 始终为null。
{"id":1,"name":"Test","previewImage":"null","tagName":"Test","typeId":1,"typeModel":null,"createdOn": "2020-06-29T23:01:24.744472","modifiedOn":"2020-06-29T23:01:24.744464"}
【问题讨论】:
标签: c# sqlite asp.net-core asp.net-web-api entity-framework-core