在LINQ to SQL中是否可以使用DataContext.CreateDatabase创建计算列?

时间:2010-08-17 13:07:05

标签: linq-to-sql expression calculated-columns

我想使用DataContext的CreateDatabase方法动态创建数据库。我手动创建了映射类并对其进行了测试。但是只要我添加表达式列(见下文),创建就会失败并出现SqlCeException,我无法找到确切的原因。

    /// <summary>
    /// The sum of ratings for this document.
    /// </summary>
    [Column]
    public Nullable<float> RatingSum { get; set; }

    /// <summary>
    /// The number of times the document was rated.
    /// </summary>
    [Column]
    public Nullable<float> RatingCount { get; set; }

    /// <summary>
    /// Average rating as calculated from RatingSum and RatingCount
    /// </summary>
    [Column(AutoSync=AutoSync.Never, IsDbGenerated=true, Expression = "RatingSum * RatingCount", DbType="REAL")]
    public Nullable<float> Rating { get; set; }

省略DbType或将其更改为FLOAT没有帮助,AutoSync.Always也没有帮助,省略AutoSync和IsDbGenerated属性也不起作用。我究竟做错了什么?或者这对动态创建的数据库不支持?

1 个答案:

答案 0 :(得分:0)

Linq to Sql本身在创建整个数据库方面非常差,至少,它不会产生缺陷,所以你必须要做的第一件事就是存储SQL代码,只要你需要创建一个SQL代码就可以运行它数据库中。