【问题标题】:Code first approach to create database with column type object使用列类型对象创建数据库的代码优先方法
【发布时间】:2013-11-20 07:00:57
【问题描述】:

这是我的类,它有一个“对象”类型的属性值

public class Answers : IEntity
{
    [Key]
    public long Id { get; set; }

    public object Value { get; set; }

    public string Alias { get; set; }

    public object[] KeyValues
    {
        get { return new object[] { this.Id }; }
    }

}

所以当实体框架在数据库中创建一个表时,它会为除了Value之外的所有属性创建列。

没有为 Value 属性创建任何列。我如何做到这一点?

【问题讨论】:

  • 您期望的数据库列类型是什么?
  • @hvd 我可以得到对象类型的列吗?
  • 如果你的数据库有一个数据类型“对象”,它不是我知道的任何数据库。 :)
  • @hvd 那么我该如何实现呢。我需要将值存储到数据库中值可以是(字符串、整数、图片、声音文件、音频文件)等:\

标签: asp.net-mvc-4 ef-code-first


【解决方案1】:

在您的数据库实体中,您只能拥有可以映射到数据库表的列类型的类型。

要拥有类似对象数组的东西,您应该创建视图模型,然后将该视图模型与您的数据库实体映射。

【讨论】:

  • 我有一个创建随机问题的用户界面,预期答案是“对象”类型(应支持任何数据类型,例如 pic.jpg、字符串等)。那么是否可以在 DB 中创建一个支持插入 Object 的列?
  • 如果我正确理解了您的要求,您可以将其以字节数组的形式存储在 db 中,因此在您的 DB 模型类中,您可以拥有 byte[] 类型的属性,在您的 poco 或 viewmodel 中可以具有可以映射到 this 的对象类型
  • 非常感谢您的建议。让我试试这个。 :)
  • 当然,它应该可以工作。顺便说一句,您可以编写自己的代码将对象类型转换为 byte[],也可以使用第三方 dll,例如 automapper
  • 谢谢@HBhatia。这将是我的问题的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
相关资源
最近更新 更多