加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – LINQ2SQL:加载匿名实体时如何修改字段值?

发布时间:2020-12-12 08:26:36 所属栏目:MsSql教程 来源:网络整理
导读:!请不要重定向到 this article,因为它不能解决下面描述的问题. 假设我们在数据库中有这样的表: SomeTable ID(int) DT(datetime) 我们已经配置了一个Linq2Sql数据上下文.我们已经为SomeTable配置了一个实体:OnLoaded方法修改DT,使DT的DateTimeKind变为Utc(
!请不要重定向到 this article,因为它不能解决下面描述的问题.

假设我们在数据库中有这样的表:

SomeTable

> ID(int)
> DT(datetime)

我们已经配置了一个Linq2Sql数据上下文.我们已经为SomeTable配置了一个实体:OnLoaded方法修改DT,使DT的DateTimeKind变为Utc(最初是未指定的).

现在这里是问题:

如果我们使用整个实体请求数据,则调用OnLoaded方法:

From x In ourDataContext.SomeTable Select x

但是,如果我们仅请求表的一部分(因此生成匿名类型),则不会调用OnLoaded:

From x In ourDataContext.SomeTable Select x.DT

很明显,OnLoaded是在SomeTable实体中定义的,而不是匿名类型.

目前我考虑创建将替换匿名类型的自定义实体.但也许有人有更好的解决方案?

解决方法

我们有类似的问题,因为我们需要从实体接收一部分字段作为匿名对象,并且始终知道我们将日期字段的DateTimeKind作为DateTimeKind.UTC,而不在LINQ请求中使用其他函数.

我们尝试了很多东西,但是我们发现只有一个很好的解决方案 – 使用T4代码生成Linq2Sql.

附:如果您想了解更多关于使用T4的Linq2Sql代码生成,您可以从http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx开始

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读