场景:计算属性需要可用于RAW方法。模型中设置的IsComputed属性将不起作用,因为RAW方法无法使用其值。
尝试解决方案:直接在SQL表上创建computed column,而不是在模型中设置IsComputed属性。指定CodefluentEntities不会覆盖计算列。我希望BOM读取计算的SQL字段与正常数据库字段没有什么不同。
问题:我无法弄清楚如何阻止Codefluent实体覆盖计算列。我尝试使用production flags以及为.cfp中的属性设置produce =“false”。两者都没有。
问题:是否可以阻止Codefluent实体覆盖我的计算列?若然,怎么办?
答案 0 :(得分:1)
您正在寻找的解决方案是here
您可以执行您喜欢的任何自定义T-SQL脚本,唯一的前提是为脚本指定一个特定名称,以便Producer知道何时执行它。
即。如果您希望在生成表后执行自定义脚本,请为脚本命名
after_[ProjectName]_tables
。
将自定义t-sql文件与codefluent生成的文件一起保存并构建项目。
在我的特定情况下,我必须在我的一个表列中启用全文索引,我为该功能编写了SQL脚本,将其另存为
`after_[ProjectName]_relations_add`
这是他们在我的文件目录中的样子
答案 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脚本的传递参考,但我找不到它。现在有人如何做到这一点?
使用后评论:只是想让人们知道我实施了这种方法,并对结果感到满意。