我的MS SQL 2014数据库表有一个使用数据库函数的计算属性列。使用SQL Server Management Studio,对表的查询按预期列出计算的属性值。
通过导入向导创建的Codefluent模型显示具有计算列作为属性的实体。基础.cpf文件使用“d3p1:compute =”定义属性以及数据库函数使用的参数列表。
当加载实体或实体集合时,计算属性中使用的属性具有值,但计算属性的值为nothing / null。
如何让Codefluent从数据库表中读取计算值并将值包含在实体的属性中?
答案 0 :(得分:1)
这有点棘手。首先,您应该像任何其他属性一样声明属性。然后,您必须指示SQL生成器在该列上声明公式。您可以使用SQL生成器命名空间中的自定义“compute
”属性执行此操作。您可以使用Visual Studio建模器进行设置,如下所示:
在这个例子中,我创建了一个int
属性,它只是另一个列值乘以2.
可选地,您可以将属性声明为“保存时读取”,因为大多数情况下,您希望在保存后读取计算值,而不仅仅是在加载操作时:
完成所有操作后,此示例控制台应用程序应显示30:
class Program
{
static void Main(string[] args)
{
var c = new Customer();
c.Name = "killroy";
c.Age = 15;
c.Save();
Console.WriteLine(c.Age2); // will display 30
}
}
答案 1 :(得分:1)
如果Simon Mouriers解决方案解决了您的问题,那可能是最好的方法。但是,还有其他2个选项
创建Codefluent实体视图后,单击Edit Where按钮,它将允许您创建RAW视图
您可以指定高级属性“UsedForMethods”。
警告:相关实体将使用该表而不是视图。这是设计上的,在知识中心的某个地方有一篇关于如何解决它的文章。 http://www.softfluent.com/product/codefluent-entities/knowledge-center/