是否可以阻止SQL Producer覆盖其中一个表列?

时间:2016-10-21 18:51:18

标签: codefluent

场景:计算属性需要可用于RAW方法。模型中设置的IsComputed属性将不起作用,因为RAW方法无法使用其值。

尝试解决方案:直接在SQL表上创建computed column,而不是在模型中设置IsComputed属性。指定CodefluentEntities不会覆盖计算列。我希望BOM读取计算的SQL字段与正常数据库字段没有什么不同。

问题:我无法弄清楚如何阻止Codefluent实体覆盖计算列。我尝试使用production flags以及为.cfp中的属性设置produce =“false”。两者都没有。

问题:是否可以阻止Codefluent实体覆盖我的计算列?若然,怎么办?

2 个答案:

答案 0 :(得分:1)

您正在寻找的解决方案是here

您可以执行您喜欢的任何自定义T-SQL脚本,唯一的前提是为脚本指定一个特定名称,以便Producer知道何时执行它。

即。如果您希望在生成表后执行自定义脚本,请为脚本命名

after_[ProjectName]_tables

将自定义t-sql文件与codefluent生成的文件一起保存并构建项目。

在我的特定情况下,我必须在我的一个表列中启用全文索引,我为该功能编写了SQL脚本,将其另存为

`after_[ProjectName]_relations_add`

这是他们在我的文件目录中的样子

file directory

答案 1 :(得分:0)

备用解决方案:另一种解决方案是在SQL Producer完成生成后执行以下TSQL脚本。

ALTER TABLE PunchCard DROP COLUMN PunchCard_CompanyCodeCalculated
GO

ALTER TABLE PunchCard
ADD PunchCard_CompanyCodeCalculated AS CASE
       WHEN PunchCard_CompanyCodeAdjusted IS NOT NULL THEN PunchCard_CompanyCodeAdjusted
       ELSE PunchCard_CompanyCode
END

GO 

使解决方案工作所需的其他配置:为了使此解决方案正常工作,还必须配置BOM,以便它不会尝试保存与计算列关联的数据。这可以通过使用高级属性的Model完成。在我的例子中,我选择了CompanyCodeCalculated属性。去了高级设置。并将保存设置设置为False。

问题:知识中心的某个地方有一个关于如何在SQL Producer完成后自动执行SQL脚本的传递参考,但我找不到它。现在有人如何做到这一点?

使用后评论:只是想让人们知道我实施了这种方法,并对结果感到满意。