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

前端之家收集整理的这篇文章主要介绍了.net – LINQ2SQL:加载匿名实体时如何修改字段值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
!请不要重定向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开始

猜你在找的MsSQL相关文章