【问题标题】:Most effective way to combine two entities and display in a data grid组合两个实体并在数据网格中显示的最有效方法
【发布时间】:2017-08-17 08:06:45
【问题描述】:

之前有其他成员提出了类似的问题,并在此处得到了回答 --> Two entities in one dataGridView

亲爱的高级开发人员,如果我错了,请纠正我,但我无法摆脱可能有更好/更有效的方法来做到这一点的感觉。

假设我有两个实体(表) - 案例和会话

案例实体

CaseId
CaseName

会话实体

SessionId
CaseId
SessionDate

现在我想在数据网格中显示 SessionId、SessionDate 和 CaseName。这样做最有效的方法是什么?我还看到了在 SQL 服务器中创建视图并将其导入 DataModel 的建议。如果这是我应该采用的方法,我的 SQL Server 视图查询会是什么样子?

【问题讨论】:

    标签: c# sql-server entity-framework datagridview


    【解决方案1】:

    我总是在 SQL 中执行此操作,并且通常会使用存储过程来返回数据并填充数据表,并在我的代码中使用该数据表。 SQL 看起来像:

    SELECT      S.SessionID     , 
                S.SessionDate   ,
                C.CaseName
    FROM        [Case]          AS  C
    INNER JOIN  [Session]       AS  S   ON C.CaseId = S.CaseId;
    

    您需要确定内连接是否正确:https://www.w3schools.com/sql/sql_join.asp

    【讨论】:

    • 感谢您及时回复。但是,我可以将其映射为实体吗?我可以改用 SQL 视图吗?
    • 是的——我猜,你如何获取信息对应用程序来说并不是很关心,只要你按照它的期望传递它。您需要创建您的视图,上面的代码可以用于此,然后在应用程序中执行 SELECT [columns] FROM [YourView]。查看您通过“实体”发布的链接,您是否指的是一个类或模型,它代表您将从视图返回的数据?如果是这样,您在流程的特定部分是否有问题?
    • 我正在使用实体框架从数据库中创建实体。我只在应用程序中使用 Linq 查询。我听说直接在应用程序中编写 SQL 是不好的做法。所以我在 Linq 中使用 Repository 模式。
    • 啊,我明白了,实体框架不是我熟悉的东西。会让别人指教。抱歉,我无法提供更多帮助。但是你是对的,在应用程序中编写 SQL 并不理想,并且可能会让你对 SQL 注入持开放态度。
    • 非常感谢您的努力!我很感激!
    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2023-03-12
    相关资源
    最近更新 更多