entity-framework - System.Drawing.Image EntityType 'Image' 没有定义键。定义此 EntityType 的键

标签 entity-framework ado.net mapping entity-framework-4.1 system.drawing.imaging

我正在使用 EF Code First 和 Data Scaffolding 并且有一个包含类型属性的实体

public System.Drawing.Image Image { get; set; }
在初始化 DB 上下文以创建 DB 时,我收到以下错误:

System.Data.Edm.EdmEntityType: : EntityType 'Image' has no key defined. Define the key for this EntityType.

System.Data.Edm.EdmEntitySet: EntityType: EntitySet Images is based on type Image that has no keys defined.


关于如何解决这个问题的任何想法?

最佳答案

按照@Gats 的回答 - 您不能将所有类都映射到 EF。 EF 仅理解基本类型,并且每个映射类必须被识别为实体或复杂类型。所以你的 Impage 必须定义为:

public byte[] Image { get; set; }

通过将其标记为 byte[] EF 将理解它必须作为 varbinary 存储在 SQL 服务器中。 EF 不支持自定义类型或自定义初始值设定项,因此您不能说 EF 您的 Image 应该是其他任何内容。

如果您也想将 Image 作为 System.Drawing.Image 公开,您可以执行以下操作:
public System.Drawing.Image GetBitmap()
{
    using (var stream = new MemoryStream(Image))
    {
        return System.Drawing.Image.FromStream(stream);
    }
}

关于entity-framework - System.Drawing.Image EntityType 'Image' 没有定义键。定义此 EntityType 的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920490/

相关文章:

c# - 如何在 Entity Framework 4 中映射枚举属性

c# - Entity Framework 更改主键类型

sql-server - 当没有事件连接时,SqlConnection.OpenAsync() 挂起

java - 在 Hibernate 中映射具有多个 ID 的扩展实体

json - Swift 3 - 将模拟的 JSON 声明为来自服务器的响应

c# - Entity Framework 中有自动关联吗?

c# LINQ Take 用于内部查询

mysql - 如何选择数据并为每个分组的选定值仅执行一次函数

c# - 如何获取 Sql Server 数据库中所有模式的列表

Grails 中定义的映射属性有很多关系