如何在 EF Code First 中声明具有 Medium Blob 数据类型的表上的字段
Posted
技术标签:
【中文标题】如何在 EF Code First 中声明具有 Medium Blob 数据类型的表上的字段【英文标题】:How do i declare a field on a table with the datatype of Medium Blob in EF Code First 【发布时间】:2018-02-22 06:33:15 【问题描述】:我正在使用 SapientGuardian.EntityFrameworkCore.mysql 使用 dotnet Core EntityFramework
我有一个数据库实体,其属性名为 ProfileImage 存储为byte[]
...提取下方
public class ProfileEntity
/// Gets or sets the full name.
/// </summary>
public string FullName get; set;
/// <summary>
/// A Byte Array with the profile image Bitmap
/// </summary>
public byte[] ProfileImage get; set;
当它在 MySql 数据库中创建时,它会创建一个 BLOB 数据类型。
我的问题是如何将其设置为 MediumBlob?
编辑: 迁移(我忘了运行)产生了以下结果:
public partial class AddMediumBlob : Migration
protected override void Up(MigrationBuilder migrationBuilder)
migrationBuilder.AlterColumn<byte[]>(
name: "ProfileImage",
table: "ProfileEntity",
type: "MediumBlob",
nullable: true,
oldClrType: typeof(byte[]),
oldNullable: true);
protected override void Down(MigrationBuilder migrationBuilder)
migrationBuilder.AlterColumn<byte[]>(
name: "ProfileImage",
table: "ProfileEntity",
nullable: true,
oldClrType: typeof(byte[]),
oldType: "MediumBlob",
oldNullable: true);
【问题讨论】:
【参考方案1】:您可以在 DbContext 中使用 Fluent API:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
modelBuilder.Entity<ProfileEntity>().Property(p => p.ProfileImage)
.HasColumnType("MediumBlob");
【讨论】:
我刚刚尝试过,它似乎不起作用。它仍然将其保留为 Blob。我使用 dotnet Core EF 有什么不同吗? 您是否创建了新的迁移?如果是,您可以发布创建的迁移类吗? Opps 我忘记了迁移 运行迁移后仍然没有更新数据库。我正在删除并重新创建,我可以看到迁移已在 __EFMigrationsHistory 表上运行,但数据类型仍然是 BLOB 也许这是一个 EF 错误,它无法识别更新表。如果您已经删除并重新创建数据库,您是否也可以尝试删除所有迁移然后创建一个新的?以上是关于如何在 EF Code First 中声明具有 Medium Blob 数据类型的表上的字段的主要内容,如果未能解决你的问题,请参考以下文章
我应该如何在 MVC3 中使用 Code First Entity Framework (4.1) 声明外键关系?
EF 4.1 Code First - 在 Firebird 数据库中存储图像