使用EF 4.1 Code First时,是否可以为架构创建用户定义的数据类型?
答案 0 :(得分:1)
简单的答案是否定的。
更长的答案:
当尝试使用用户定义的类型时,当前的EF实现会导致多个问题:
Seed
方法中定义类型(通常用于其他数据库构造,如触发器或索引)。要使这项工作,您必须通过实现IDatabaseInitializer
并分离数据库创建和表创建来创建全新的初始化程序,因为自定义类型定义必须介于它们之间。 Here是如何创建数据库初始化程序的一些示例(每次运行应用程序时都会重新创建表)。ColumnAttribute
和HasColumnType
都不接受自定义类型。因此,您的映射必须指定基本的原始SQL类型,并且这些自定义类型将在EF生成的表DDL中使用。因此,除非自定义数据库初始化程序后处理那些生成的SQL脚本并用自定义类型替换基本类型(非常难看的解决方案),否则表将不会使用它们。