首页 > 解决方案 > 如何在 asp.net 核心中使用 Fluent API 在数据库类属性上设置默认“图像”?

问题描述

我正在尝试在我的 DBContext 中的代码优先属性上设置默认的“图像”,并且需要使用依赖注入来添加“IHostingEnvironment”以获得根路径。如何将 'IHostingEnvironment' 添加到我的 'OnModelCreating()' 以访问路径以在目录中查找我的图像并将它们设置为我的数据库类的特定属性的默认值?

我正在使用 Asp.net core 2.2,但找不到我的答案

protected override void OnModelCreating(ModelBuilder builder,IFormFile img)
{
   base.OnModelCreating(builder);
   builder.Entity<ApplicationUser>(entity =>
   { 
      ...
      byte[] b = new byte[img.Length];
      img.OpenReadStream().Read(b, 0, b.Length);
      p.img = b;
      entity.Property(b => b.UserImage).HasDefaultValue(b);
      ...
   });
}

我希望每当新用户注册到我的网站时,系统会自动为他设置默认(和随机)图像并将其存储在数据库中,而无需重复在数组中读取和写入图像的代码。类似于我上面写的代码。

标签: c#asp.net-coredependency-injectionentity-framework-corecode-first

解决方案


如果您的目标是为数据库中的某些列定义默认值,则最好的方法将在类构造函数中设置,因此当您的应用程序创建该类的实体时,该实体已经具有默认值。


推荐阅读