来自数据库计算的值 属性 在 codefluent 实体 属性 中为 Null
value from database computed property is Null in codefluent entity property
我的 MS SQL 2014 数据库 table 有一个使用数据库函数的计算 属性 列。使用 SQL Server Management Studio,对 table 的查询按预期列出计算的 属性 值。
通过导入向导创建的 Codefluent 模型将具有计算列的实体显示为 属性。底层 .cpf 文件定义 属性 和 "d3p1:compute=" 以及数据库函数使用的参数列表。
加载实体或实体集合时,计算 属性 中使用的属性具有值,但计算 属性 具有值 nothing/null。
如何让 Codefluent 从数据库中读取计算值 table 并将该值包含在实体的属性中?
这有点棘手。首先,您应该像声明任何其他 属性 一样声明 属性。然后您必须指示 SQL 生产者在该列上声明一个公式。您可以使用 SQL 生产者命名空间中的自定义“compute
”属性来做到这一点。您可以像这样使用 Visual Studio 建模器进行设置:
在此示例中,我创建了一个 int
属性,它只是另一个列值乘以 2。
您可以选择将 属性 声明为 'read on save',因为大多数时候,您希望在保存后读取计算值,而不仅仅是加载操作:
全部完成后,此示例控制台应用程序应显示 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
}
}
如果 Simon Mouriers 解决方案可以解决您的问题,那可能是最好的方法。但是,还有 2 个其他选项
- RAW 查看方法
创建一个 Codefluent 实体视图后,单击“编辑位置”按钮,它将允许您创建一个 RAW 视图
您可以指定高级 属性 "UsedForMethods"。
警告: 相关实体将使用 table 而不是视图。这是设计使然,知识中心某处有一篇文章介绍如何绕过它。 http://www.softfluent.com/product/codefluent-entities/knowledge-center/
- 重命名 SQL Tables 并创建一个 SQL 与原始视图同名的视图 Table - 这方法是一种 hack,Softfluent 不鼓励这种方法,我喜欢它,因为我确切地知道幕后发生了什么。我在需要软删除的场景中成功地使用了它。我已经使用 2 个处理重命名的存储过程自动化了该过程。使用此方法需要 运行 一个存储过程在构建模型之前撤消名称更改。另一个存储过程在构建模型后处理重命名。我将在几天内 post 存储过程以及我如何使用它们。
我的 MS SQL 2014 数据库 table 有一个使用数据库函数的计算 属性 列。使用 SQL Server Management Studio,对 table 的查询按预期列出计算的 属性 值。
通过导入向导创建的 Codefluent 模型将具有计算列的实体显示为 属性。底层 .cpf 文件定义 属性 和 "d3p1:compute=" 以及数据库函数使用的参数列表。
加载实体或实体集合时,计算 属性 中使用的属性具有值,但计算 属性 具有值 nothing/null。
如何让 Codefluent 从数据库中读取计算值 table 并将该值包含在实体的属性中?
这有点棘手。首先,您应该像声明任何其他 属性 一样声明 属性。然后您必须指示 SQL 生产者在该列上声明一个公式。您可以使用 SQL 生产者命名空间中的自定义“compute
”属性来做到这一点。您可以像这样使用 Visual Studio 建模器进行设置:
在此示例中,我创建了一个 int
属性,它只是另一个列值乘以 2。
您可以选择将 属性 声明为 'read on save',因为大多数时候,您希望在保存后读取计算值,而不仅仅是加载操作:
全部完成后,此示例控制台应用程序应显示 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
}
}
如果 Simon Mouriers 解决方案可以解决您的问题,那可能是最好的方法。但是,还有 2 个其他选项
- RAW 查看方法
创建一个 Codefluent 实体视图后,单击“编辑位置”按钮,它将允许您创建一个 RAW 视图
您可以指定高级 属性 "UsedForMethods"。
警告: 相关实体将使用 table 而不是视图。这是设计使然,知识中心某处有一篇文章介绍如何绕过它。 http://www.softfluent.com/product/codefluent-entities/knowledge-center/
- 重命名 SQL Tables 并创建一个 SQL 与原始视图同名的视图 Table - 这方法是一种 hack,Softfluent 不鼓励这种方法,我喜欢它,因为我确切地知道幕后发生了什么。我在需要软删除的场景中成功地使用了它。我已经使用 2 个处理重命名的存储过程自动化了该过程。使用此方法需要 运行 一个存储过程在构建模型之前撤消名称更改。另一个存储过程在构建模型后处理重命名。我将在几天内 post 存储过程以及我如何使用它们。