首先是 EF 4.1 模型中的图像数据类型

发布于 2024-11-17 11:06:20 字数 969 浏览 4 评论 0原文

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

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

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

我们发现了一些使用代码优先方法的指针,来自 EF 4.1 发行说明, 相关的 ADO.net 团队博客文章描述相关问题的第三篇文章A SO 查询讨论相关问题。然而,所有这些都讨论了使用“代码优先”方法的问题。

有什么解决办法模型优先吗?

谢谢!

We have a project which used Entity Framwork 4.0. We draw the model and then generate an SQL Compact 3.5 DB.

Since we needed a large BLOB store, we created a column with the Image data type (since Binary is limited to 8000 bytes). However, when updating to EF 4.1 our model was silently converted to having a Binary column instead!

No worries, we thought, we'll just change it back. Problem is Image cannot be selected anymore! And - specifying binary and setting length to a large value, say 100000, gives an error when trying to generate the DB.

We have found some pointers working with a code first approach, from EF 4.1 Release Notes, A related ADO.net team blog post, A third post describing the related issue and A SO questing discussing the related issue. However, all these talk about the issue using the Code First approach.

Any pointers on solving it Model First?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤千羽 2024-11-24 11:06:20

您需要使用 XML 编辑器打开模型文件 .edmx。在 部分,将数据 PropertyTypevarbinary 更改为 图片
例如:

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

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

这是一个小技巧,因此每次更改模型时都必须执行此操作。

You need to open model file .edmx with XML editor. And in <edmx:StorageModels> section, change Type for your data Property from varbinary to image.
For example:

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

You may also need to manually change the type of the column in .sdf file.

This is a little hack, so you have to do this every time you change your model.

悍妇囚夫 2024-11-24 11:06:20

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

编辑:

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

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

convert your image to a byte array and store it like that then convert to image when you pull it out of the database that is how I store most of my blob type data
as far as the code first approach issues you mentioned is there a specific reason you cannot use code first API and fluent mapping with your database

Edit:

Use the varbinary(max) for datatypes larger than 8kb as image will be deprecated in the future ref
in your edmx file if you are using model first then you can set the column datatype in the properties section when the column is selected in the designer if you are using database first design then you can change the datatype in the database then regenerate model from the database

codefirst api create your data base then use reverse engineer codefirst using entity framework powertools ctp to generate your code first models and context

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文