微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何正确地向LinqToSQL数据类添加运行时计算的非持久只读属性

如何解决如何正确地向LinqToSQL数据类添加运行时计算的非持久只读属性

| 表中有一个DateTime字段,LinqTosql数据类中有一个映射的属性。任务是添加一个布尔IsWorkingTime运行时(不直接映射到任何列,而是根据读取进行计算)属性,该属性将说明DateTime是否是工作时间(日期部分既不是周末也不是假日,并且时间部分是在上午9点之间)和下午5点)。该属性应可用于LINQ查询,但不影响数据库背景。 如何实现呢?我使用Visual Studio数据类设计器首先绘制模型,然后生成数据库。     

解决方法

至于添加属性,您可以利用附加的局部类定义将其添加到模型中。如
//TheModel.cs
// file generated by tool
public partial class TheModel
{
    // ...
}
然后你的扩展
//TheModelCustom.cs
public partial class TheModel
{
     public bool IsWorkingTime
     {
          get
          {
               // your (hopefully inexpensive) logic
          }
     }
}
您希望在Linq中使用该物业的部分会遇到麻烦。如果要使用它来构造去数据库的查询,则可能不走运。提供程序将无法将属性及其逻辑转换为适当的SQL。但是,如果可以通过数据库后过滤/投影/等方式获得帮助,则可以在返回数据后使用该属性。
 var results = (from model in db.TheModels 
               where /* some criteria */
               select model) // <-- the part of the query that goes to the DB
               .AsEnumerable()
               .Where(m => m.IsWorkingTime); // <-- happens in memory
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。