我想以编程方式为我的 EF 4.3 Code-First 数据库创建数据库创建脚本。数据库使用标准 DatabaseInitializer 机制创建得很好,但以下代码失败:
using(var dc = new MyContext())
{
var objContext = (IObjectContextAdapter)dc;
var script = objContext.ObjectContext.CreateDatabaseScript();
}
我得到的例外是:
不属于“timestamp”或“rowversion”类型的属性不支持存储生成的模式“Computed”。
我确实定义了一个“字符串”类型的计算列,但就像我说的,当通过内置的 DatabaseInitializer 创建时,数据库创建得很好。奇怪的是,使用此方法生成的架构实际上并没有创建计算列。
至于我为什么这样做,我有一个运行后创建的脚本,它删除了这个列并创建了一个真正的计算列。如果不指定在 EF 映射中计算的列,它将尝试在插入时为该列分配一个值,然后失败。