c# - 使用 Entity Framework Code First 在 PostgreSQL 中存储图像

标签 c# entity-framework postgresql ef-code-first npgsql

我需要在我的 PostgreSQL 数据库中存储一个图像,该数据库是我使用 Entity Framework 6 的代码优先编写的,并通过 Npgsql 映射它。

Other questions asked关于该主题建议使用 byte[]。但是,PostgreSQL 不能使用 byte[]。但是它可以使用一个名为 bytea 的类型,这是一个 byte array .但是我如何在 C# 中获得这种类型?

编辑:

我做了一个假设,它是无法创建的 byte[]。我做了一个 Update-Database -verbose,它给了我以下信息:

PM> Update-Database -verbose
Using StartUp project 'Core.Shell'.
Using NuGet project 'Core.Database'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'TrackerDB' (DataSource: tcp://localhost:5432, Provider: Npgsql, Origin: Configuration).
Applying explicit migrations: [201604130907499_initial].
Applying explicit migration: 201604130907499_initial.
CREATE TABLE "public"."EmployeePhotoes"("EmployeePhotoId" int4 NOT NULL DEFAULT 0,"Image" bytea,"EmployeeId" int4 NOT NULL DEFAULT 0,CONSTRAINT "PK_public.EmployeePhotoes" PRIMARY KEY ("EmployeePhotoId"))
CREATE INDEX "EmployeePhotoes_IX_EmployeePhotoId" ON "public"."EmployeePhotoes" ("EmployeePhotoId")
ALTER TABLE "public"."EmployeePhotoes" ADD CONSTRAINT "FK_public.EmployeePhotoes_public.Employees_EmployeePhotoId" FOREIGN KEY ("EmployeePhotoId") REFERENCES "public"."Employees" ("EmployeeId")
ALTER TABLE "dbo"."__MigrationHistory" SET SCHEMA public
System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Npgsql.NpgsqlException,Npgsql, Version=3.0.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7'.
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
    at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
    at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
    at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
    at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Type is not resolved for member 'Npgsql.NpgsqlException,Npgsql, Version=3.0.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7'.

我要添加的类:

public class EmployeePhoto
{
    //Primary key
    public int EmployeePhotoId { get; set; }

    public byte[] Image { get; set; }  

    //Foreign key
    public int EmployeeId { get; set; }

    //Navigation property
    public Employee Employee { get; set; } //1 photo for 1 Employee
}

我不完全确定什么类型没有被 Npgsql 解析

最佳答案

Turns out发生这种情况是因为 Npgsql 安装在 GAC 中。

此问题已通过安装最新版本的 Npgsql 得到解决.

关于c# - 使用 Entity Framework Code First 在 PostgreSQL 中存储图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36594288/

相关文章:

entity-framework - 在一个 View 页面中同时显示两个局部 View

entity-framework - 如何在远程目标上初始化 EF Code First 迁移

c# - 消除 LET 运算符和 SqlFunctions

json - Postgres 选择作为 json 散列

postgresql - lo_export 在 PostgreSQL 9.3 中不存在

sql - 组的行级安全性或使行可访问组

C# TagLib 为 Mp3 设置专辑封面

c# - 在窗体中声明 C# 类对象

c# - 如何在C#Win Form应用程序中设置Sub Crystal报表的数据源

c# - 在 Windows 应用商店应用中放大图像