gpt4 book ai didi

c# - LINQ to Entities - 完成此任务的最佳方法?

转载 作者:行者123 更新时间:2023-11-30 21:17:52 25 4
gpt4 key购买 nike

好的,我主要是一名 LAMP 开发人员,所以我是 Entity Framework 的新手。但是,我熟悉 LINQ 的基础知识,并且已经从我的数据库中生成了一个实体模型。现在这是我的要求:

我在 WinForm 上有一个数据网格,随着其他来源对数据集的更改,每隔几秒就会从远程服务器上的数据源刷新一次。显然,我想构造一个 lambda 表达式来获得正确的匿名类型,以满足需要在我的数据网格中显示的列。我已经这样做了,这是结果(顺便说一句,我使用的是自定义数据网格控件):

alt text

到目前为止我的代码:

Models.dataEntities objDB = new Models.dataEntities();

var vans = from v in objDB.vans
select v;

gcVans.DataSource = vans;

好的,现在我有了我的基本数据集。我遇到的一个问题是“状态”列将显示基于数据集中多个参数的计算字符串。我通过部分类将其添加到我的实体中。正如您在屏幕截图中所见,它工作正常:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1.Models {

public partial class van {

public string van_status {

get {

if (this.is_offline == 1) {

return "Offline";

} else if (this.is_prayer_room == 1) {

return "In Prayer Room";

} else {

return "TODO: Create statuses";

}

}

}

}

}

这个添加的属性工作正常。但是,第二次我尝试以匿名类型投影状态以便我也可以检索学校名称时,我收到错误消息:

Models.dataEntities objDB = new Models.dataEntities();

var vans = from v in objDB.vans
select new {

van_name = v.van_name,
school_name = v.school.school_name,
capacity = v.capacity,
phone = v.phone,
van_status = v.van_status

};

gcVans.DataSource = vans;

alt text

所以,我有两个问题:

1) 如果我不能在 LINQ 投影中使用我的部分类的计算属性,我应该如何在我的数据网格中显示我的计算字符串?

2) 我是否正确地处理了这个问题?当我解决#1 时,我将如何刷新此数据(即在计时器触发事件​​期间)?我会简单地调用 objDB.refresh() 然后告诉我的数据网格从数据源更新吗?调用该方法实际上是运行上面的 lambda 表达式还是从数据库加载所有内容?

感谢您对此提供的任何帮助。此外,如果您有任何最佳实践可以分享,那就太棒了!我希望我已经尽可能详细地解释了这一点,因为您需要提供帮助。

最佳答案

1) 您始终可以创建自己的包含只读属性 van_status 的类,而不是使用分部类修改 EF 对象。您获得的代码几乎相同:

Models.dataEntities objDB = new Models.dataEntities();
gcVans.DataSource = from v in objDB.vans
select new DisplayVan {
van_name = v.van_name,
school_name = v.school.school_name,
capacity = v.capacity,
phone = v.phone,
};

van_status 属性,因为它是只读的,所以不需要在查询中指定。

2) 与桌面开发人员相比,我更像是一名 Web 开发人员,所以我会告诉您我对如何刷新网格的看法(这可能不是胖客户端的首选方法)...

我不愿意相信 .Refresh() 方法,希望所有方法都能发挥最大效率并正常工作。相反,将 #1 中的代码封装在您自己的方法中,并从您的计时器事件触发中调用它(或者您选择实现定期刷新)。

关于c# - LINQ to Entities - 完成此任务的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com