gpt4 book ai didi

c# - 使用 EntityFramework Core 为包含大量信息的数据播种的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 00:58:07 24 4
gpt4 key购买 nike

我有一个实体配置文件,我在 HasData 的帮助下播种数据,下面的例子。

public class PublicationConfiguration : IEntityTypeConfiguration<Publication>
{
public void Configure(EntityTypeBuilder<Publication> builder)
{
builder.Property(p => p.Image)
.HasMaxLength(256)
.HasDefaultValue("default-publication.png")
.IsRequired();

builder.Property(p => p.Title)
.HasMaxLength(256)
.IsRequired();

builder.Property(p => p.Value)
.IsRequired();

builder.Property(p => p.PublisherId)
.IsRequired();

builder.Property(p => p.CategoryId)
.IsRequired();

builder.HasOne(p => p.Category)
.WithMany(categ => categ.Publications)
.OnDelete(DeleteBehavior.Restrict);

builder.HasOne(p => p.Publisher)
.WithMany(pub => pub.Publications)
.OnDelete(DeleteBehavior.Restrict);

builder.HasData(
new Publication {
Id = "publication-one",
Title = "the first publication",
Value = "the content of the very first publication on the web-site",
CreatedAt = DateTime.Now,
CategoryId = "category-one",
PublisherId = "publisher-one",
Image = "image"
},
new Publication
{
Id = "publication-two",
Title = "the second publication",
Value = "the content of the second publication on the web-site",
CreatedAt = DateTime.Now,
CategoryId = "category-one",
PublisherId = "publisher-two",
Image = "image"
},
new Publication
{
Id = "publication-three",
Title = "the third publication",
Value = "the content of the third publication on the web-site",
CreatedAt = DateTime.Now,
CategoryId = "category-two",
PublisherId = "publisher-one",
Image = "image"
}
);
}
}

如您所见,我有一个名为 Value 的属性。 ,它只是一个字符串,但我要把它改成一个字符串数组,并添加一些真实的信息,意思是 Value将包含超过一千个字符,而且只有 3 Publications在这里,但我想再添加 10 个。因此,我的播种机看起来又大又可怕,我不喜欢它。

所以我想将这些数据移动到其他任何地方,也许是一个 json 文件,然后从这个文件中读取数据,或者可能有更好的方法,但我不知道如何做到这一点以及如何正确地做到这一点。

问题是,这个问题的最佳解决方案是什么?我很高兴看到解决方案代码。

最佳答案

上面的答案有效,但我使它可重用。

这是结果。

public static class SeedHelper
{
public static List<TEntity> SeedData<TEntity>(string fileName)
{
string currentDirectory = Directory.GetCurrentDirectory();
string path = "Static/Json";
string fullPath = Path.Combine(currentDirectory, path, fileName);

var result = new List<TEntity>();
using (StreamReader reader = new StreamReader(fullPath))
{
string json = reader.ReadToEnd();
result = JsonConvert.DeserializeObject<List<TEntity>>(json);
}

return result;
}
}

希望您理解 "Static/Json"是我的 json 文件所在的路径。

关于c# - 使用 EntityFramework Core 为包含大量信息的数据播种的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60708955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com