EF:更新 sql 视图或添加自定义属性

Posted

技术标签:

【中文标题】EF:更新 sql 视图或添加自定义属性【英文标题】:EF: updating a sql view or adding custom properties 【发布时间】:2012-04-02 14:07:35 【问题描述】:

我刚开始使用 EF,需要一些基本指南

我有一个名为 Persons 的表,其中包含名字、姓氏、生日等信息

现在我将一个数据网格绑定到它(在 WPF 中)并且一切正常

但是我如何为全名(姓氏,名字)创建一个列?

在我过去的项目(ms 访问,asp.net)中,我会创建一个视图名称 viwpersons 并在那里拥有所有计算/计算的列。然后将 UI 绑定到视图

使用 EF,如果您绑定视图,则会出现一些问题

    你必须一次又一次地删除definingquery,否则你不能更新 当用户编辑姓氏或名字时,该字段不会更新,直到整个数据网格被反弹或刷新 插入和删除是完全不可能的 即使编辑数据网格连接到表,所以我们可以插入和删除,更改不会反映在应用程序周围的下拉列表等中,因为它们连接到视图的ObservableCollection,而不是表

所以经过几个星期这样那样的黑客攻击,我决定去“概念”或“逻辑”或其他什么。我从我的 edmx 中删除了视图,并且只使用表格。我正在尝试将我的第一个计算列添加到表中。根据许多博客,我将此添加到我的代码中

Partial Class Person
    <System.Runtime.Serialization.DataMember()> ReadOnly Property FullName
    Get
        Return LastName & ", " & FirstName
    End Get
End Property
End Class

但是这种方式也存在一些问题

    试图对此进行过滤,给我一个错误Late binding operations cannot be converted to an expression tree. [现在我相信这是真的,因为 mssql 无法过滤这个不存在的字段] 没有其他应用程序或服务可以直接使用数据库,因为它没有视图,如果所有逻辑都将放在 EF 代码中 性能,将字段放入代码中会禁用 mssql 用于汇总和连接数百万条记录的所有“基于集合”的功能(在上面的示例中它无关紧要,但最终我有更多 id 需要的字段,例如余额)

那么,这样做的正确、首选的“EF 方式”是什么?

一切顺利,感谢您的建议

【问题讨论】:

有人有什么想法吗?我真的需要一个好的答案。谢谢 【参考方案1】:

对于给出的示例,计算数据库中的字段是否满足您的需求?

alter table person add fullname as lastname + ', ' + firstname(SQL 服务器)

【讨论】:

对于这个简单的要求是的。但我的问题更广泛。即通过union query 计算的人员余额,然后通过inner join 加入人员表。我想在显示人员的数据网格中显示此列,但问题比比皆是...

以上是关于EF:更新 sql 视图或添加自定义属性的主要内容,如果未能解决你的问题,请参考以下文章

在 EF7(核心)OnModelCreating 中使用自定义属性

如何使用属性单元测试自定义视图

UIViewController 上的自定义属性,如 splitViewController 或 tabBarController

EF Core 5 - 如何将 EF.Functions.Like 与映射到 JSON 字符串的自定义属性一起使用?

Android 自定义视图 XML 中的复杂属性

怎么给treeview接点增加自定义属性