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

时间:2012-04-02 14:07:36

标签: sql-server entity-framework view

我从EF开始,需要一些基本的指导

我有一个名为Persons的表,名字,姓氏,生日和更多

现在我将数据网格绑定到它(在WPF中)并且很好

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

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

使用EF,如果绑定视图,则存在一些问题

  1. 您必须一次又一次地删除definingquery,否则您无法更新
  2. 当用户编辑lastname或firstame时,该字段不会更新,直到整个数据网格被反弹或刷新
  3. 插入和删除是完全不可能的
  4. 即使编辑数据网格已连接到表格,因此我们可以插入和删除,更改不会反映在应用程序周围的下拉列表等中,因为它们已连接到视图的ObservableCollection,而不是表
  5. 因此,经过几周的黑客攻击,我决定采用“概念”或“逻辑”等等。我从我的edmx中删除了视图,我将只使用表格。我正在尝试将我的第一个计算列添加到表中。根据许多博客我把它添加到我的代码

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

    但这种方法也有一些问题

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

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

      一切顺利,我感谢您的建议

1 个答案:

答案 0 :(得分:0)

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

alter table person add fullname as lastname + ', ' + firstname(sql server)