数据库计算属性的值在codefluent实体属性中为Null

时间:2016-09-06 04:31:36

标签: codefluent

我的MS SQL 2014数据库表有一个使用数据库函数的计算属性列。使用SQL Server Management Studio,对表的查询按预期列出计算的属性值。

通过导入向导创建的Codefluent模型显示具有计算列作为属性的实体。基础.cpf文件使用“d3p1:compute =”定义属性以及数据库函数使用的参数列表。

当加载实体或实体集合时,计算属性中使用的属性具有值,但计算属性的值为nothing / null。

如何让Codefluent从数据库表中读取计算值并将值包含在实体的属性中?

2 个答案:

答案 0 :(得分:1)

这有点棘手。首先,您应该像任何其他属性一样声明属性。然后,您必须指示SQL生成器在该列上声明公式。您可以使用SQL生成器命名空间中的自定义“compute”属性执行此操作。您可以使用Visual Studio建模器进行设置,如下所示:

enter image description here

在这个例子中,我创建了一个int属性,它只是另一个列值乘以2.

可选地,您可以将属性声明为“保存时读取”,因为大多数情况下,您希望在保存后读取计算值,而不仅仅是在加载操作时:

enter image description here

完成所有操作后,此示例控制台应用程序应显示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个选项

  1. RAW查看方法
  2. 创建Codefluent实体视图后,单击Edit Where按钮,它将允许您创建RAW视图

    enter image description here

    您可以指定高级属性“UsedForMethods”。

    警告:相关实体将使用该表而不是视图。这是设计上的,在知识中心的某个地方有一篇关于如何解决它的文章。 http://www.softfluent.com/product/codefluent-entities/knowledge-center/

    enter image description here

    1. 重命名SQL表并创建一个与原始表同名的SQL视图 - 这种方法很糟糕,Softfluent不鼓励这种方法,我很喜欢它,因为我确切地知道在场景。我在需要软删除的场景中成功使用了它。我已经使用2个处理重命名的存储过程自动化了该过程。使用此方法需要运行其中一个存储过程以在构建模型之前撤消名称更改。另一个存储过程在构建模型后处理重命名。我将在几天内发布存储过程以及如何使用它们。
相关问题