1

我们有一个使用实体框架 4.0 的项目。我们绘制模型,然后生成 SQL Compact 3.5 DB。

由于我们需要一个大型 BLOB 存储,我们创建了一个具有Image数据类型的列(因为Binary限制为 8000 字节)。但是,当更新到 EF 4.1 时,我们的模型被静默转换为具有二进制列!

不用担心,我们想,我们只要把它改回来。问题是不能再选择图像了!并且 - 指定二进制并将长度设置为一个较大的值,比如 100000,在尝试生成数据库时会出错。

我们从EF 4.1 Release Notes相关的 ADO.net 团队博客文章描述相关问题的第三篇文章讨论相关问题的 SO questing中找到了一些使用代码优先方法的指针。但是,所有这些都使用Code First方法谈论这个问题。

关于解决它的任何指针Model First

谢谢!

4

2 回答 2

0

将您的图像转换为字节数组并像这样存储它,然后当您将其从数据库中拉出时转换为图像,这就是我存储大部分 blob 类型数据的方式,就您提到的代码优先方法问题而言,是否有特定原因您不能在数据库中使用代码优先 API 和流畅的映射

编辑:

将 varbinary(max) 用于大于 8kb 的数据类型,因为 如果您首先使用模型,则 edmx 文件中的图像将在未来被弃用,然后您可以在设计器中选择列时在属性部分中设置列数据类型,如果您正在使用数据库优先设计,然后您可以更改数据库中的数据类型,然后从数据库重新生成模型

codefirst api 创建您的数据库,然后使用逆向工程 codefirst 使用实体框架 powertools ctp 生成您的代码优先模型和上下文

于 2011-08-09T18:44:58.310 回答
0

您需要.edmx使用 XML 编辑器打开模型文件。在<edmx:StorageModels>部分中,将Type您的数据Property从更改varbinaryimage。例如:

<EntityType Name="DataSet">
 <Property Name="data" Type="image" Nullable="false" />
</EntityType>

您可能还需要手动更改.sdf文件中列的类型。

这是一个小技巧,所以每次更改模型时都必须这样做。

于 2013-03-20T07:05:28.830 回答