如何将运行时计算的非持久只读属性正确添加到 LinqToSQL 数据类
表中有一个 DateTime 字段,LinqToSQL 数据类中有一个映射属性。任务是添加一个布尔值 IsWorkingTime 运行时(不直接映射到任何列,而是在读取时计算)属性,该属性将说明 DateTime 是否是工作时间(日期部分既不是周末也不是假期,时间部分在上午 9 点之间)和下午 5 点)。该属性应该可用于 LINQ 查询,但不会影响数据库后台。
如何实现这一目标?我使用 Visual Studio 数据类设计器首先绘制模型,然后生成数据库。
There is a DateTime field in a table and a mapped property in LinqToSQL data class. The task is to add a boolean IsWorkingTime runtime (not mapped to any column directly but calculated on read) property which will say whether the DateTime is a working hour (the date part is neither a weekend nor a holiday and the time part is between 9am and 5pm). The property should be available for LINQ queries but not affecting the database background.
How to achieve that? I use Visual Studio data classes designer to draw the model first and generate the database then.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
至于添加属性,您可以利用附加的分部类定义将其添加到模型中。例如
然后你的扩展
你会遇到麻烦的是希望使用 Linq 中的属性的部分。如果您想使用它构建对数据库的查询,您可能会不走运。提供者将无法将属性及其逻辑转换为适当的 SQL。但是,如果您可以通过数据库后过滤/投影/等来完成,则可以在返回数据后使用该属性。
As for adding the property, you can utilize an additional partial class definition to add it to the model. Such as
And then your extension
Where you will run into trouble is the part about wishing to use the property in Linq. If you want to use it for constructing a query going to the database, you may be out of luck. The provider will not be able to translate the property and its logic to the appropriate SQL. However, if you can get by with post-DB filtering/projecting/etc., you can use the property once the data has been returned.